manual creación de una aplicación con el framework cakephp

8
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'; } ?>

Upload: alberto-cardenas

Post on 13-Oct-2014

93 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: MANUAL Creación de una aplicación con el framework CakePHP

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

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

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

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

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

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

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

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