Blog


22
diciembre
- 2011 -
David Nieves Coronado

1.- ¿Qué es CakePhp y porque utilizarlo?

CakePHP es un marco de desarrollo [framework] rápido para PHP, libre, de código abierto. Se trata de una estructura que sirve de base a los programadores para que éstos puedan crear aplicaciones Web. Nuestro principal objetivo es que puedas trabajar de forma estructurada y rápida, sin pérdida de flexibilidad.

Con CakePHP el desarrollo web ya no es monótono porque ofrecemos las herramientas para que empieces a escribir el código que realmente necesitas: la lógica específica de tu aplicación. Consigue una copia de CakePHP, empieza con lo verdaderamente importante y no reinventes la rueda cada vez que te incorpores a un nuevo proyecto.

2.- Entendiendo el Modelo Vista Controlador

Las aplicaciones CakePHP bien escritas siguen el patrón de diseño de software MVC (Modelo-Vista-Controlador). Programar utilizando MVC consiste en separar la aplicación en tres partes principales. El modelo representa los datos de la aplicación, la vista hace una presentación del modelo de datos, y el controlador maneja y enruta las peticiones [requests] hechas por los usuarios.

Modelo Vista Controlador

3.- Carpetas importantes en CakePhp

En la raíz de nuestro sitio CakePhp tendremos estas 3 carpetas:

      • cake: Es el corazón de nuestra aplicación web en CakePhp.
        En teoría no se suele tocar su contenido, esta carpeta tiene que ver con las actualizaciones de CakePhp.
      • app: En la carpeta app se almacena toda la configuración y desarrollo de nuestra aplicación.Carpetas de app:
        • config-> B ase de datos, caché…
        • controllers -> Programación, capa lógica. En CakePhp SIEMRPE se utiliza este metodo para llamar a nuestros controladores: nombrecontrolador_controller.php. Un controlador es imprescindible, siempre lo debemos de llamar para ejecutar algo, no podremos buscar un .php suelto… Las URL en CakePhp se componen de http://nombreSitio/nombControlador/nombAcción/parametro1/parametro2…. Ejemplo: http://localhost/cakephp/posts/view/3 -> Contralador: posts, Acción: visualizar (view), Parametro: 3 (el de ID=3). Los controladores SIEMPRE se ponen en plural.
        • libs -> Librerías externas.
        • locale -> Gestionar idiomas.
        • models -> Se almacenarán los modelos, en CakePhp cada modelo “representa” una tabla en nuesra base de datos. SIEMPRE van en singular.
        • plugins -> Componentes de terceros.
        • test -> Test unitarios, no aplicaremos nada de momento.
        • temp -> Logs y ficheros temporales, como por ejemplo la caché.
        • vendor -> Aplicaciones de terceros.
        • views -> Maquetación HTML cualquiero cosa relacionada con la vista. Dentro views tendremos una carpeta por cada controlador (con el mismo nombre) y dentro de esta tendremos tantos .ctp como acciones haya para ese controlador.
        • webroot -> El único directorio accesible al exterior, almacenaremos css, imagenes, javascript, flash…

4.- Aplicación 1

Vamos a crear una aplicación cuya función sea mostrar articulos de nuestra base de datos.

1.- Crear un modelos para los artículos. app/model/post.php

<?php
class Post extends AppModel
      {
            var $name = ‘Post’;
      }
?>

Nombrando nuestro modelo como Post, CakePHP puede automáticamente inferir que este modelo será usado en el controlador PostsController, y será atado a la tabla de la base de datos llamada posts.

2.- Crear un controlador para nuestros artículos. app/controller/posts_controller.php

<?php
      class PostsController extends AppController
      {
            var $name = ‘Posts’; //Hasta aquí es como debe verse un controlador básico.

            //Agregamos una acción a nuestro controlador (funcion index()) esto representaría a la             hora de poner una url www.example.com/posts/index o www.example.com/posts/
            function index()
            {
            $this->set(‘posts’, $this->Post->find(‘all’)); //Con la función set() pasaremos los datos             del controlador a la vista, lo que estamos haciendo es igualar la variable ‘posts’ al valor              retornado por el método del modelo Post find(‘all’)
            }

      }
?>

3.- Crear una vista para los articulos, para la acción index. app/views/posts/index.ctp

<?php
      foreach
($posts as $post):

            echo $post['Post']['id']; //Mostramos el id del artículo.

           echo $html->link($post['Post']['title'],”
      /posts/view/”.$post['Post']['id']); //Con la función Link() fabricamos un enlace para ver el       articulo aparte. Esto te gereraría por ejemplo: <a href=”/posts/view/3″>Titulo del articulo       (con id=3)</a> LA ACCIÓN VIEW LA DEFINIREMOS MÁS ADELANTE.


            echo $post['Post']['created']; //Mostramos la fecha de creación.

      endforeach;

?>

4.- Crear una nueva acción (view) para nuestros articulos en el controlador. app/controller/posts_controller.php

En el punto 2 creamos una acción (function index()) para que nos represente la vista a la hora de entrar al index, la cual la acabamos de desarrollar en el punto 3 mostrando una lista de todos nuestros artículos. Lo que vamos a hacer ahora es otra acción que muestre el post individual pasándole como condición el id del mismo.

En nuestro controlador, Debajo de la acción “function index()” crearemos la nueva acción “function view()” con el siguiente código.

function view($id = null)
{

         $this->Post->id = $id;
      $this->set(‘post’, $this->Post->read()); //igualamos la variable ‘posts’ al valor              retornado por el método del modelo Post read()
}

Una vez creada la acción y la vista (punto 5) si por ejemplo en nuestro navegador ponemos la dirección http://nombreWebCakePhp/posts/view/5 nos mostrará el artículo con id=5.

5.- Creamos la vista para nuestra acción view. app/views/posts/view.ctp

<h1><?php echo $post['Post']['title']?></h1>
<p><small>Creado: <?php echo $post['Post']['created']?></small></p>
<p><?php echo $post['Post']['body']?></p>

 

Recopilación Básica CakePhp fue posteado el diciembre 22, 2011 a las 10:30 en CakePHP y. fue modificado el diciembre 22, 2011 at 12:06. Puedes seguir cualquier respuesta a esta entrada a través de la RSS 2.0 feed. Puedes dejar una respuesta o hacer un trackback desde tu web.

Compartir: Twitter, Facebook, Delicious, Digg, Reddit

|

2 Comments

Baldomero on 01/31/2013 at 13:58.

Hola, muy bueno tu tutorial, queria hacerte una consulta, necesito cargar una libreria ( colorbox) pero yo se que se tiene que importar en algun archivo para que sea generico, ya que si importo en home.ctp, esa libreria solo estara en ese archivo.
la pregunta es facil pero soy un nobato con MVC.
gracias de antemano

Responder

David Nieves Coronado on 02/01/2013 at 13:29.

Hola Baldomero, lo primero gracias por tu pregunta.

La mejor forma de que un archivo sea genérico, ya sea una librería, un css, un simple js etc… Debes añadirlo en el Layout principal, previamente has de tener tu plataforma cakephp organizada con todos los archivos/carpetas que componen tu layout. Para entrar más en detalle visita -> http://book.cakephp.org/2.0/en/views.html

Saludos desde Consultoria Innova.

Responder

Deja tu comentario

Tranquilo, tu email no será publicado o compartido.
Rellena los campos obligatorios marcados con *


*

Puedes utilizar etiquetas HTML con sus correspondientes atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>