Sie sind auf Seite 1von 9

1. Para cambiar la direccin URL sin tantos caracteres Crear o copiar un .

.htaccess en la carpeta raz, con el siguiente contenido Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php Quitar comentarios a la siguiente lnea de cdigo y agregar dos lneas ms: 'showScriptName'=> false, urlSuffix=>.html, en el archivo main.php de la carpeta \protected\config 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=> false, urlSuffix=>.html, 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), 2. Para colocar el ttulo en la pestaa, accedemos al archivo index.php de la carpeta \protected\views\saludo, siendo la carpeta saludo el controlador nuevo que hemos creado y el archivo index.php la vista del controlador. <?php $this->pageTitle='Hola Cmo ests?'; ?> Para acceder al inicio desde la vista creada y mostrada actualmente. <?php $this->breadcrumbs=array('saludo'); ?> 3. Para cambiar el ttulo de la aplicacin, entramos a la carpeta \protected\config y en main.php: return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', //'name'=>'My Web Application', 'name'=>'MI APLICACIN WEB', 'language'=>'es', 'sourceLanguage'=>'es', 'charset'=>'iso-8859-1', Podemos modificar sin ningn problema el nombre de la aplicacin Tambin podemos cambiar el main.php de protect/layout en <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Por <meta http-equiv="Content-Type" content="text/html; charset-utf-8" /> O por

<meta http-equiv="Content-Type" content="text/html; charset-<?php echo Yii::app()->charset;?>" /> As tambin para el lenguaje, cambiamos: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> Por <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo Yii::app()->language;?>" lang="<?php echo Yii::app()->language;?>"> Tambin podemos cambiar: <meta name="language" content="<?php echo Yii::app()->language;?>" /> 4. Para el acceso a datos, primero accedemos al archivo main.php de protected\config Comentamos las siguientes lneas 'db'=>array( 'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db', ), Y quitamos el comentario para las siguientes lneas desde donde se hace el ingreso a datos 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=datos1', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8, ), Creamos la base de datos datos1, lo han hecho con cotejamiento utf8-general ci, no s porqu. En la base de datos1 creamos una tabla, llamada tarea, con 3 campos (id int autocrement primary, nombre varchar 255, descripcin TEXT) Y le insertamos dos registros a la tabla INSERT INTO `tareas`(`id`, `nombre`, `descripcion`) VALUES (NULL,'Pagar Servicios', 'Debo ir a pagar la factura de la energa para no quedarme sin el servicio'); INSERT INTO `tareas`(`id`, `nombre`, `descripcion`) VALUES (NULL,'Comprar el pan', 'Son casi las 6 de la tarde debo ir a traer el pan ya pagado'); Creamos el modelo de la tabla Tareas <?php class Tareas extends CActiveRecord{ public static function model($className=__CLASS__){ return parent::model($className); } } Y lo guardamos dentro de la carpeta \protected\models con el nombre de la tabla Tareas.php Creamos el controlador del modelo Tareas <?php class TareasController extends Controller{ public function actionIndex(){ $this->render('index'); } } Y lo guardamos dentro de la carpeta \protected\controllers con el nombre TareasController.php

Creamos la vista del modelo Tareas <h1>Listado de tareas</h1> <?php echo 'Probando la vista Index'; ?> Y lo guardamos dentro de la carpeta \protected\views\tareas con el nombre index.php (Recordar que la carpeta tareas pertenece a la vista y tiene que ser creada, todo en minsculas). Para visualizar los datos de la Tabla Tareas en la vista Tareas, accedemos al controlador del modelo (TareasController.php) y aadimos las siguientes lneas: <?php class TareasController extends Controller{ public function actionIndex(){ $model=Tareas::model(); $tareas=$model->findAll(); //Las dos lneas anteriores las podemos reemplazar por la siguiente lnea de cdigo: //$tareas=Tareas::model()->findAll(); $this->render('index',array('tareas'=>$tareas)); } } Y en el index.php de la vista tareas, creamos la tabla que mostrar los datos, aadiendo las siguientes lneas <h1>Listado de tareas</h1> <?php echo 'Probando la vista Index'; ?> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Descripcin</th> </tr> <?php foreach($tareas as $t){ ?> <tr> <td><?php echo $t->id;?></td> <td><?php echo $t->nombre;?></td> <td><?php echo $t->descripcion;?></td> </tr> <?php } ?> </table> Para acceder a un solo elemento del array o de los datos, vamos a crear una columna ms <h1>Listado de tareas</h1> <?php echo 'Probando la vista Index'; ?> <table> <tr> <th>ID</th> <th>Nombre</th> <th>Descripcin</th> <th>Ver</th> </tr> <?php foreach($tareas as $t){ ?> <tr> <td><?php echo $t->id;?></td>

<td><?php echo $t->nombre;?></td> <td><?php echo $t->descripcion;?></td> <td><?php echo CHtml::link('Ver',array('view','id'=>$t->id));?></td> </tr> <?php } ?> </table> Para activar la columna Ver de la vista tareas, insertamos las siguiente lneas en el Controlador de Tareas: public function actionView($id){ $model = Tareas::model()->findByPk($id); $this->render('view'array('model'=>$model)); } Ahora creamos la vista para esta nueva accin: <h1>Detalle de la Tarea</h1> <b>ID</b> <?php echo $model->id;?><br> <b>NOMBRE</b> <?php echo $model->nombre;?><br> <b>DESCRIPCIN</b> <?php echo $model->descripcion;?><br> Lo guardamos con el nombre view.php en la vista tareas, es decir en \protected\views\tareas Podramos agregar la siguiente lnea al final con un link atrs para que regrese a la vista anterior <?php echo CHtml::link('Atrs',array('index'));?> O <?php echo CHtml::link('Atrs',array('site/index'));?> Para que regrese a la pgina principal xD Para editar los datos de la base de datos, accedemos a index.php de \protected\views\tareas, en las cabeceras insertamos: <th>Editar</th> Y en las columnas insertamos: <td><?php echo CHtml::link('Editar',array('edit','id'=>$t->id));?></td> Luego en el controlador, es decir en TareasController.php de \protected\controllers, agregamos la siguiente funcin: public function actionEdit($id){ $model = Tareas::model()->findByPk($id); //Esto es como hacer un select de tu registro //Desde aqu mostraremos qu es lo que manda el formulario a travs del POST //echo '<pre>'; // print_r($_POST); //echo '</pre>'; //Yii::app()->end(); if(isset($_POST['Tareas'])){ //Valida si trae algn valor en el formulario $model->attributes=$_POST['Tareas']; //se asignan los valores del formulario a la clase modelo if($model->save()) //Esto es como un UPDATE tareas WHERE id = {el id que trae la accin } $this->redirect(array('view','id'=>$model->id)); //esto es como hacer un header location } $this->render('edit',array('model'=>$model)); }

Ahora creamos la vista para la edicin <h1>Editando la Tarea</h1> <?php $form=$this->beginWidget('CActiveForm');?> <div> <?php echo $form->labelEx($model,'nombre');?> <?php echo $form->textField($model,'nombre');?> <?php echo $form->error($model,'nombre');?> </div> <div> <?php echo $form->labelEx($model,'descripcion');?> <?php echo $form->textArea($model,'descripcion');?> <?php echo $form->error($model,'descripcion');?> </div> <?php echo CHtml::submitButton('Editar')?> <?php $this->endWidget(); ?> Lo guardamos en \protected\views\tareas con el nombre edit.php Para poder utilizar el formulario que he creado, tengo que crear algunas reglas en el modelo: public function rules (){ return array( array('nombre,descripcion','required','message'=>'Campos requeridos'), ); } Esto lo escribimos en el modelo Tareas.php ubicado en \protected\models Para editar lo primero que hacemos editar la vista index.php de las tareas, agregando la lnea: <h1>Listado de tareas</h1> <?php echo 'Probando la vista Index'; ?> <?php echo CHtml::link('Crear tarea',array('add'));?> <table> Luego tenemos que agregar la accin Add en el controlador de la siguiente manera public function actionAdd(){ $model = new Tareas(); //Esto es como hacer un select de tu registro //Desde aqu mostraremos qu es lo que manda el formulario a travs del POST //echo '<pre>'; // print_r($_POST); //echo '</pre>'; //Yii::app()->end(); if(isset($_POST['Tareas'])){ //Valida si trae algn valor en el formulario $model->attributes=$_POST['Tareas']; //se asignan los valores del formulario a la clase modelo if($model->save()) //Esto es como un UPDATE tareas WHERE id = {el id que trae la accin} $this->redirect(array('view','id'=>$model->id)); //esto es como hacer un header location } $this->render('add',array('model'=>$model)); }

Ahora creamos la vista para aadir datos: <h1>Nueva la Tarea</h1> <?php $form=$this->beginWidget('CActiveForm');?> <div> <?php echo $form->labelEx($model,'nombre');?> <?php echo $form->textField($model,'nombre');?> <?php echo $form->error($model,'nombre');?> </div> <div> <?php echo $form->labelEx($model,'descripcion');?> <?php echo $form->textArea($model,'descripcion');?> <?php echo $form->error($model,'descripcion');?> </div> <?php echo CHtml::submitButton('Crear');?> <?php $this->endWidget(); ?> Y lo guardamos con el nombre add.php en las vistas de la tarea, es decir \protected\views\tareas Para poder borrar datos, primero modificamos el index.php de la vista en \protected\views\tareas <th>ID</th> <th>Nombre</th> <th>Descripcin</th> <th>Ver</th> <th>Editar</th> <th>Eliminar</th> </tr> <?php foreach($tareas as $t){ ?> <tr> <td><?php echo $t->id;?></td> <td><?php echo $t->nombre;?></td> <td><?php echo $t->descripcion;?></td> <td><?php echo CHtml::link('Ver',array('view','id'=>$t->id));?></td> <td><?php echo CHtml::link('Editar',array('edit','id'=>$t->id));?></td> <td><?php echo CHtml::link('Eliminar',array('delete','id'=>$t->id),array('confirm'=>'Seguro lo borro?');?></td> </tr> Modificamos nuevamente le controlador para poder borrar, agregando una nueva accin: public function actionDelete(){ $model=Tareas::model()->findByPk($id); $delete->delete(); $this->redirect(array('index')); }

5. Para generar el cdigo Para empezar, entramos al archivo main.php de \protected\config y editamos las siguientes lneas de cdigo: 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'name'=>'Uso del mdulo GII', 'language'=>'es', 'sourceLanguage'=>'es', 'charset'=>'iso-8859-1', Tambin quitamos el comentario a las siguientes lneas: 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'Enter Your Password Here', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','::1'), ), Y tambin: 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=testdrive', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', ), Y cambiamos algunos valores: 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'123456, // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','::1'), ), 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=d', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', ), Nos dirigimos al navegador y escribimos localhost/CarpetadeAplicacion/gii, escribimos la contrasea que establecimos para ste mdulo. Debemos recordar que para crear un CRUD, primero debemos crear el modelo, en ste caso el modelo que creamos fue tareas, as que creamos ingresamos el nombre de la tabla Tareas, y automticamente Yii, ingresar el nombre del modelo. Dejamos marcada la casilla new y damos clic en el botn Generate, el modelo se generar en la carpeta /protected/models Para crear el CRUD, ingresamos nuevamente a localhost/CarpetadeAplicacion/gii, y hacemos clic en Crud Generator, ingresamos el nombre del modelo, con mayscula: Tareas, luego hacemos clic en el botn Generate, el cdigo se generar en la carpeta /protected/controllers con el nombre TareaCotroller.php, al ser un CRUD; las acciones se realizarn en el controlador de la aplicacin.

6. Para la base de datos Hacemos el diseo de la base de datos en DBDesigner, luego para copiar el script a SQL, es decir para poder ingresar las tablas en MySQL como consulta, hacemos un clic en el ltimo botn de la caja de herramientas (SQL Creates Script), luego se abre un cuadro de dilogo en el cual haremos clic en el botn Copy Script to Clipboard, luego para pegar, creamos nuestra base de datos en el localhost, y en pegamos lo que habamos copiado en las sentencias de SQL. Las tablas usadas son Ciudad, Estudios, Experiencia, Folio, Usuarios. 7. Para las relaciones y los modelos en Yii y Gii BELONGS_TO, HAS_MANY Para trabajar con las relaciones en Yii, entramos al main.php de la carpeta config y habilitamos el mdulo Gii, tambin habilitamos la conexin a la base de datos. Luego entramos al modulo Gii desde el localhost/relaciones/gii Primero creo el modelo o los modelos y los CRUS de las tablas, respectivamente, Ciudad, Estudios, Experiencia, Folio, Usuarios. Ahora cambio el main.php de /protected/views/layouts, para crear los links de todos CRUD que se ha creado. Las vistas se pueden crear individualmente haciendo clic en la parte de los Links. Creo usuarios, no sin antes haber creado algunas ciudades. Luego en el archivo en la carpeta models, entramos al archivo Usuarios.php y modificamos la funcin relations public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'ciudad'=>array(self::BELONGS_TO,'Ciudad','ciudad_id'), 'experiencias'=>array(self::HAS_MANY,'Experiencia','usuarios_id'), ); } Tambin podemos modificar la siguiente lnea: public function attributeLabels() { return array( 'id' => 'ID', 'ciudad_id' => 'Ciudad de Nacimiento', //De esta manera estamos cambiando el label. 'nombres' => 'Nombres', 'identificacion' => 'Identificacion', 'email' => 'Email', 'estado' => 'Estado', 'genero' => 'Genero', ); } Luego en el controlador de usuarios, es decir en UsuariosController.php, en: public function actionIndex() { $dataProvider=new CActiveDataProvider('Usuarios'); $this->render('index',array( 'dataProvider'=>$dataProvider, ));

} Nos damos cuenta que los datos se mandan a travs de una parmetro dataProvider, a la vista index.php de usuarios, en la vista index.php, se reciben los datos de dataProvider y renderiza parcialmente en la vista _view.php de usuarios a travs de un widget, ste widget lo hace para que nosotros podamos personalizar esta vista nuestro antojo. En esa vista _view.php, cambio la siguiente lnea: <b><?php echo CHtml::encode($data->getAttributeLabel('ciudad_id')); ?>:</b> <?php echo CHtml::encode($data->ciudad_id); ?> <br /> Por <b><?php echo CHtml::encode($data->getAttributeLabel('ciudad_id')); ?>:</b> <?php echo CHtml::encode($data->ciudad->nombre); ?> <br />

8. A 9. A 10.a 11.

Das könnte Ihnen auch gefallen