manual creación de una aplicación con el framework cakephp
TRANSCRIPT
![Page 1: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/1.jpg)
Creación de una aplicación con el framework CakePHP: blog.
1. Crear base de datos En la configuración se creó la base de datos "caketest" se creará la tabla "posts" y se agregaran algunos datos para prueba. Para configuracion de la base de datos ver el video – vinculo en Referencias
2. Crear el modelo para el blog: los modelos se guardan en la carpeta \app\Model , ahí se crea el archivo Post.php cuyo contenido es:
3. Crear el controlador para los artículos: estos se guardan en la carpeta \app\Controller, el archivo controlador se va a llamar PostsController.php. CakePHP maneja el nombre de los archivos con las tablas de la base de datos y las vista en PHP, de ahí la relación entre los nombres.
/* tabla para nuestros articulos */ CREATE TABLE posts ( IdPost INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, Titulo VARCHAR(50), Contenido TEXT, Creado DATETIME DEFAULT NULL, Modificado DATETIME DEFAULT NULL); /* algunos valores de prueba */ INSERT INTO posts (Titulo,Contenido,Creado) VALUES ('Este es el titulo', 'Este es el contenido.', NOW()); INSERT INTO posts (Titulo,Contenido,Creado) VALUES ('En un lugar de la mancha', 'Del cual no me quiero (o puedo) acordar....', NOW()); INSERT INTO posts (Titulo,Contenido,Creado) VALUES ('Otro titulo', 'Yo soy el contenido de este post.', NOW());
<?php class Post extends AppModel { public $name = 'Post'; } ?>
![Page 2: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/2.jpg)
Al controlador se le ha agregado una acción representando una función concreta o interfaz para la
aplicación (function index(){….).
4. Crear la vista para los artículos: teniendo el modelo (la base de datos) y el controlador (el archivo creado en el punto anterior) ahora se crea la vista para completar esta aplicación. Las vista se almacenan en \app\View, la vista debe llevar el mismo nombre que el controlador; se debe crear la carpeta Posts y dentro el archivo index.ctp. El contenido del archivo es el siguiente:
<?php class PostsController extends AppController { public $helpers = array ('Html','Form'); function index() { $this->set('posts', $this->Post->find('all')); } } ?>
<<!-- File: \app\View\Posts\index.ctp --> <h1>Blog posts</h1> <table> <tr> <th>Id</th> <th>Titulo</th> <th>Creado</th> </tr> <!—Aqui se recupera el arreglo $posts presentando los post y organizandolos en una tabla --> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post['Post']['IdPost']; ?></td> <td> <?php echo $this->Html->link($post['Post']['Titulo'], array('controller' => 'posts', 'action' => 'view', $post['Post']['IdPost'])); ?> </td> <td><?php echo $post['Post']['Creado']; ?></td> </tr> <?php endforeach; ?> </table>
![Page 3: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/3.jpg)
5. Es necesario agregar las siguientes líneas al archivo PostsController.php para control de de la vista de los post individuales
Quedando el archivo de la siguiente manera
6. Ahora se crea la vista para la función view($id) (creada en el punto anterior) en la carpeta \app\View\Posts, el nombre del archivo es view.ctp y el contenido el siguiente:
7. Para agregar post es necesario agregar las siguientes líneas al controlador PostsController.php
public function view($id = null) { $this->Post->IdPost = $id; $this->set('post', $this->Post->read()); }
<?php class PostsController extends AppController { public $helpers = array ('Html','Form'); function index() { $this->set('posts', $this->Post->find('all')); } public function view($id = null) { $this->Post->IdPost = $id; $this->set('post', $this->Post->read()); } } ?>
<!-- File: \app\View\Posts\view.ctp --> <h1><?php echo $post['Post']['Titulo']?></h1> <p><small>Creado: <?php echo $post['Post']['Creado']?></small></p> <p><?php echo $post['Post']['Contenido']?></p>
![Page 4: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/4.jpg)
A este punto el archivo controlador (PostsController.php) debe lucir así:
8. Como en los casos anteriores, la vista para la función add() se crea en la carpeta \app\View\Posts, el
nombre del archivo es add.ctp y contiene lo siguiente:
public $name = 'Posts'; public $components = array('Session'); public function add() { if ($this->request->is('post')) { if ($this->Post->save($this->request->data)) { $this->Session->setFlash('El post ha sido publicado.'); $this->redirect(array('action' => 'index')); } } }
<?php class PostsController extends AppController { public $helpers = array ('Html','Form'); public $name = 'Posts'; public $components = array('Session'); function index() { $this->set('posts', $this->Post->find('all')); } public function view($id = null) { $this->Post->IdPost = $id; $this->set('post', $this->Post->read()); } public function add() { if ($this->request->is('post')) { if ($this->Post->save($this->request->data)) { $this->Session->setFlash('El post ha sido publicado.'); $this->redirect(array('action' => 'index')); } } } }
![Page 5: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/5.jpg)
9. Ahora es necesario agregar la siguiente línea al archivo \app\view\Posts\index.ctp justo antes de
iniciar la tabla con el tag <table>
10. Las reglas de validación se escriben en el modelo, se agregan las siguientes líneas al archivo Post.php
ubicado en la carpeta \app\Model :
11. Siguiendo la misma línea se agrega la función edit($id) al controlador (PostsController.php):
<!-- File: \app\View\Posts\add.ctp --> <h1>Agregar Post</h1> <?php echo $this->Form->create('Post'); echo $this->Form->input('Titulo'); echo $this->Form->input('Contenido', array('rows' => '3')); echo $this->Form->end('Guardar Post'); ?>
<?php echo $this->Html->link('Agregar nuevo Post', array('controller' => 'posts', 'action' => 'add')); ?>
<?php class Post extends AppModel { public $name = 'Post'; public $validate = array( 'Titulo' => array( 'rule' => 'notEmpty' ), 'Contenido' => array( 'rule' => 'notEmpty' ) ); }
![Page 6: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/6.jpg)
y la vista en la carpeta \app\View\Posts el archivo edit.ctp :
function edit($id = null) { $this->Post->IdPost = $id; if ($this->request->is('get')) { $this->request->data = $this->Post->read(); } else { if ($this->Post->save($this->request->data)) { $this->Session->setFlash('El post ha sido actualizado.'); $this->redirect(array('action' => 'index')); } } }
<!-- File: \app\View\Posts\edit.ctp --> <h1>Editar Post</h1> <?php echo $this->Form->create('Post', array('action' => 'edit')); echo $this->Form->input('Titulo'); echo $this->Form->input('Contenido', array('rows' => '3')); echo $this->Form->input('IdPost', array('type' => 'hidden')); echo $this->Form->end('Guardar cambios'); ?>}
![Page 7: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/7.jpg)
12. Editando el archivo index.ctp se agregan las opciones de Eliminar y Editar post; este archivo queda de la siguiente manera:
13. Al hacer clic en el link Eliminar no ocurre nada ya que no hemos creado la función delete() en el archivo
controlador (PostsController.php)
<<!-- File: \app\View\Posts\index.ctp --> <h1>Posts del Blog</h1> <?php echo $this->Html->link('Agregar nuevo Post', array('controller' => 'posts', 'action' => 'add')); ?> <table> <tr> <th>Id</th> <th>Titulo</th> <th>Action</th> <th>Creado</th> </tr> <!—Aqui se recupera el arreglo $posts presentando los post y organizandolos en una tabla --> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post['Post']['IdPost']; ?> </td> <td><?php echo $this->Html->link($post['Post']['Titulo'], array('action' => 'view', $post['Post']['IdPost']));?> </td> <td><?php echo $this->Form->postLink('Eliminar', array('action' => 'delete', $post['Post']['IdPost']), array('confirm' => '¿Esta Seguro?')) ?> <?php echo $this->Html->link('Editar', array('action' => 'edit', $post['Post']['IdPost']));?> </td> <td><?php echo $post['Post']['Creado']; ?> </td> </tr> <?php endforeach; ?> </table>
function delete($id) { if (!$this->request->is('post')) { throw new MethodNotAllowedException(); } if ($this->Post->delete($id)) { $this->Session->setFlash('El post: ' . $id . ' va a ser borrado.'); $this->redirect(array('action' => 'index')); } }
![Page 8: MANUAL Creación de una aplicación con el framework CakePHP](https://reader036.vdocuments.mx/reader036/viewer/2022081907/543bff71afaf9fe7568b4e09/html5/thumbnails/8.jpg)
14. Resultado final
Referencias 1. Video de configuración de CakePHP con XAMPP en Windows 7
http://www.youtube.com/watch?v=M_dqtZmZbUk
2. Blog original de donde se tomaron los pasos para el video http://criogeniaestudio.blogspot.com/2011/09/instalando-cakephp-1311-sobre-windows-7.html
3. Página oficial de CakePHP http://cakephp.org/
4. Este tutorial en la página de CakePHP http://book.cakephp.org/2.0/es/getting-started.html Para detalles sobre las líneas de código, instalación e instalación avanzada de CakePHP
Alberto Cardenas http://otroblogsobretics.wordpress.com