CRUD con Yii Framework
Vamos a ver como hacer un CRUD con Yii Framework (Create,Read,Update,Delete) de una tabla de la BD pruebas llamada usuarios con las columnas id,email,password,nombre,apellido. El formulario: <?php class UsuariosForm extends CFormModel{ //Campos que tendrá el formulario public $nombre; public $apellido; public $password; public $email; //Reglas de validación public function rules(){ return array( //Estos campos serán obligatorios array('nombre, email, password,apellido', 'required', "message"=>"Este campo es obligatorio"), //Validando el nombre con una...
Validar datos fuera de formularios en Yii
Esta forma de validar es muy similar a como lo hace Codeigniter, es muy sencilla, y puede ser muy útil cuando los formularios por cualquier cuestión han sido creados manualmente o nos interesa validar algún dato aislado. Tenemos en una vista un formulario creado “a mano”: <form action="" method="post"> Email: <input type="email" name="email" value=""/> <input type="submit" name="enviar" value="Enviar"/> </form> Y validamos los datos en el controlador creando el objeto...
Crear el formulario solo con validación en el servidor en Yii
Utilizamos el modelo visto anteriormente. La vista usuarios: <h1>Formularios en Yii Framework</h1> <div class="form col-lg-10"> <?php $model=$formulario; //Formulario con validación en backend echo CHtml::beginForm(); ?> <?php //echo CHtml::errorSummary($model); ?> <div class="row"> <?php echo CHtml::activeLabel($model,'nombre'); ?> <?php echo CHtml::activeTextField($model,'nombre',array("class"=>"form-control")) ?> <?php echo CHtml::error($model,'nombre'); ?> </div> <div class="row"> <?php echo CHtml::activeLabel($model,'apellido'); ?> <?php echo CHtml::activeTextField($model,'apellido',array("class"=>"form-control")) ?> <?php echo CHtml::error($model,'apellido'); ?> </div> <div class="row"> <?php echo CHtml::activeLabel($model,'email'); ?> <?php echo CHtml::activeEmailField($model,'email',array("class"=>"form-control")) ?>...
Crear el formulario con validación en el cliente y servidor en Yii
Utilizamos el modelo del tutorial anterior. Hay que añadir esta hoja de estilos a la plantilla que utilizamos: <!--Validación formularios front-end--> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" /> La vista usuarios: <h1>Formularios en Yii Framework</h1> <div class="form col-lg-10"> <?php //Formulario con validación en frontend y backend $model=$formulario; $form=$this->beginWidget('CActiveForm',array( "method"=>"POST", "action"=>"", "enableClientValidation"=>true, "clientOptions"=>array( "validateOnSubmit"=>true, "validateOnChange"=>true, "validateOnType"=>true ) )); ?> <!--Este metodo imprime un resumen de los errores del formulario-->...
Crear modelo de formulario en Yii
Los formularios en Yii se definen en un modelo de formulario, en el que indicamos los campos del formulario y las reglas de validación de este, posteriormente en la vista imprimimos el formulario. Esto esta muy bien ya que de forma automática nos valida y nos repobla los formularios sin mucho esfuerzo. Lo que diferencia a Yii de otros frameworks en este sentido no es que su componente de...
Modelos en Yii Framework
Hay dos tipos de modelos en Yii Framework, los modelos de interacción con la base de datos y los modelos de formulario. Vamos a ver el primer tipo de modelo. Lo ideal como en todos los frameworks es utilizar de forma estricta el ORM que estos incluyen, en el caso de Yii Active Record, de forma que cada modelo que creamos represente a una tabla de la base de...
Conexión a la base de datos en Yii
Para configurar la conexión a la base de datos en Yii Framework, tenemos que definir un array en el fichero de configuración principal de la aplicación. Yii nos da la posibilidad de conectarnos a diferentes tipos de sgbd, para ello incluye drivers para MySQL, SQLite y PostgreSQL. Estos son los diferentes strings de conexión: SQLite: sqlite:/path/to/dbfile MySQL: mysql:host=localhost;dbname=testdb PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb Ejemplo de conexión a la base de...
Conseguir información del cliente con ChttpRequest en Yii
Esto no es más que una serie de métodos que trabajan con variables superglobales especialmente con $_SERVER. Veamos un ejemplo de su uso en una vista. <h1>CHttpRequest $_SERVER en Yii</h1> <ul class="list-group"> <li class="list-group-item"><?php echo Yii::app()->request->baseUrl //URL base ?></li> <li class="list-group-item"><?php echo Yii::app()->request->requestUri //URL solicitada?></li> <li class="list-group-item"><?php echo Yii::app()->request->pathInfo //Acción en la que estamos?></li> <li class="list-group-item"><?php echo Yii::app()->request->urlReferrer //De donde vengo?></li> <li class="list-group-item"><?php echo Yii::app()->request->userAgent //Navegador y sistema del...
Redireccionar en Yii
Vamos a ver las diferentes opciones que tenemos para redireccionar en Yii. Las redirecciones forman parte del componente controller. En cualquier controlador por un lado podemos redireccionar: $this->redirect(Yii::app()->request->baseUrl."/holamundo"); O bien refrescar:...
Crear helpers en Yii
Veamos como crear helpers en Yii. Lo recomendable es crear el fichero protected/components/helpers.php y ahí crear todas las funciones helper que necesitemos. El siguiente paso será incluir este archivo de helpers en el fichero de principal de configuración justo antes del array de configuración, de esta forma: //Cargar helpers require_once( dirname(__FILE__) . ‘/../components/helpers.php’); Ejemplo: <?php // protected/components/helpers.php // Aqui van los helpers //Comprobar que no existe la función if(!function_exists("imprimirTiempo")){...
Utilizar helpers predefinidos en Yii
Tenemos muchos helpers con el componente Chtml, los cuales nos generan codigo html. Por ejemplo podemos crear un enlace de esta forma: <?php echo Chtml::link("parámetros",Yii::app()->request->baseUrl. "holamundo/gotham/7/helpers/html", array("title"=>"","id"=>"Gotham City","class"=>"link")) ?> Personalmente este tipo de helpers me parecen un poco absurdos ya que html no es nada complejo ni difícil de recordar. Más información:...
Lanzar excepción 404 en Yii
Al igual que en otros framework, en Yii podemos lanzar excepciones con la siguiente orden en cualquier método action de cualquier controlador. throw new CHttpException(404,"No...