SlideShare una empresa de Scribd logo
CakePHP
ßetaBeers Valencia, 01/12/2011
Sobre mi


●   Andy Dawson
●   @AD7six
●   Blogger infrequente AD7six.com
●   Desarrollador desde 1999
●   PHP desde 2005
●   CakePHP
    ○ desde 2005
    ○ Autor de muchos plugins
    ○ Miembro del equipo core de CakePHP
Tecnologías y Herramientas
Tecnologías y Herramientas
¿Por que usar un framework?


● Estructura
● Se concentra en implementar la aplicación
● Evita problemas comunes
● Consigue un código reutilizable
● Se beneficia del conocomiento de otros
  desarolladores
● Desarrollo Rápido (RAD)
Los problemas de los frameworks
●   Estructura
●   Falta de flexibilidad
●   Complejidad
●   Tiempo para aprender
●   Rendimiento
●   Hay muchos - ¿cómo elejir?
CakePHP en breve


●   Convención sobre Configuración
●   Estructura MVC
●   Fácil de usar, rápido de aprender
●   RAD prototyping (scaffolding)
●   Generdor de código (bake)
●   unit test (phpunit)
●   Gran cantidad de plugins publicados
●   Gran comunidad
●   versión 1.3, php 4.3.2+
●   versión 2.0, php 5.2.9+ (y pdo)
Como Empezar


●   Principal: http://cakephp.org
●   Repo: http://github.com/cakephp/cakephp
●   Docs: http://book.cakephp.org/2.0/
●   El grupo google: cakephp-esp
●   Irc: Freenode #cakephp-es
Bienvenido a CakePHP
Ficheros y carpetas


● ROOT
  ○ app
    ■ Controler
    ■ Model
    ■ View
    ■ weboot
       ●   css
       ●   js
  ○ lib
     ■ Cake
  ○ plugins
  ○ vendors
Ficheros y carpetas


● ROOT
  ○ app
    ■ Controler
    ■ Model
    ■ View
    ■ weboot
       ●   css
       ●   js
  ○ lib
     ■ Cake       La estructura es una
  ○ plugins       "convención" - Se puede
  ○ vendors       mover fácilmente
Bake - un generador de todo

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake

---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
>
Primeros pasos: Prototipo


Como hacer el blog-tutorial en 15 segundos

1. Cargar sql en BBDD
2. Generar controlador
3. Ver resultado
1) SQL

/* First, create our posts table: */
CREATE TABLE posts (
   id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
   title VARCHAR(50),
   body TEXT,
   created DATETIME DEFAULT NULL,
   modified DATETIME DEFAULT NULL
);

/* Then insert some posts for testing: */
INSERT INTO posts (title,body,created)
   VALUES ('The title', 'This is the post body.', NOW());
INSERT INTO posts (title,body,created)
   VALUES ('A title once again', 'And the post body follows.', NOW());
INSERT INTO posts (title,body,created)
   VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
2) Generar Controllador

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake Controller Posts
Welcome to CakePHP v2.0.4 Console
---------------------------------------------------------------
App : cakephp
Path: /home/andy/www/apps/cakephp/
---------------------------------------------------------------

Baking controller class for Posts...

Creating file /home/andy/www/apps/cakephp/Controller/PostsController.php
Wrote `/home/andy/www/apps/cakephp/Controller/PostsController.php`
Bake is detecting possible fixtures...

Baking test case for Posts Controller ...

Creating file /home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php
Wrote `/home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php`
3) Ver Resultados
Un Controlador de Scaffolding

<?php
// Controller/PostsController.php
App::uses('AppController', 'Controller');
/**
 * Posts Controller
 *
 */
class PostsController extends AppController {

/**
 * Scaffold
 *
 * @var mixed
 */
      public $scaffold;

}
Puntos de interés


● Definir BBDD -> generar código
● Si no existe un modelo - Cake usará un
  modelo genérico
● Es todo dinámico - no hay código para
  modificar
● Útil mientras el diseño de la BBDD no esté
  definido
¿Cambios en la BBDD?


ALTER TABLE
  posts
ADD COLUMN
  published TINYINT(1) DEFAULT 0
AFTER body;
Las vistas se adaptan
Siguiente Fase: Bake MVC


Como hacer el blog-tutorial en 15 segundos.
Otra vez.

1. Cargar sql en BBDD
2. Generar MVC
3. Ver resultados
2) Generar MVC

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake all Post -q

Baking model class for Post...
Baking controller class for Posts...
Baking test case for Posts Controller ...
Baking `index` view file...
Baking `view` view file...
Baking `add` view file...
Baking `edit` view file...

Bake All complete
3) Ver Resultados
Diferencias con Scaffolding


Ahora hay:

Controller/PostsController.php
Model/Post.php
Test/Case/Controller/PostsControllerTest.php
Test/Fixture/PostFixture.php
View/Posts/add.ctp
View/Posts/edit.ctp
View/Posts/index.ctp
View/Posts/view.ctp
No es dinámico

<?php
// Controller/PostsController.php
App::uses('AppController', 'Controller');
/**
 * Posts Controller
 */
class PostsController extends AppController {

/**
 * index method
 */
       public function index() {
             $this->Post->recursive = 0;
             $this->set('posts', $this->paginate());
       }

     ...
Contiene ejemplos de uso

<?php // View/Posts/edit.ctp ?>
<div class="posts form">
<?php echo $this->Form->create('Post');?>
    <fieldset>
       <legend><?php echo __('Edit Post'); ?></legend>
    <?php
       echo $this->Form->input('id');
       echo $this->Form->input('title');
       echo $this->Form->input('body');
       echo $this->Form->input('published');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit'));?>
</div>
...
Se puede hacer aun más sencillo



 <?php // View/Posts/edit.ctp ?>
 <div class="posts form">
   <?php
      echo $this->Form->create();
      echo $this->Form->inputs();
      echo $this->Form->end();
   ?>
 </div>
Puntos de interés


● Cuidado con bake en modo no-interactivo,
  sobrescribe ficheros sin confirmar
● Scaffolding y el código de bake son
  visualmente iguales
● Usa Scaffolding si es útil para ti - o salta
  directamente a código que puedas tocar.
● Pero usa bake - ahorra mucho tiempo
Modelos - clases importantes


● "Fat Models, Skinny Controllers" es un dicho
  al que hay que hacer caso
● Es mejor llena los modelos con logica, no
  los controlladores
● Ejemplo - validación
Sin validación - GIGO
La razón - un modelo flaco


<?php
// Model/Post.php
App::uses('AppModel', 'Model');
/**
 * Post Model
 *
 */
class Post extends AppModel {
}
Añadir validación (con Bake)

<?php
App::uses('AppModel', 'Model');
class Post extends AppModel {

  public $displayField = 'title';

  public $validate = array(
    'title' => array(
         'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Escribe un titulo, por favor'
         ),
         'minlength' => array(
            'rule' => array('minlength', 10),
            'message' => 'Un poquito mas...'
         ),
    ...
Resultados con validación
Puntos de interés

● Las vistas (el ayudante formulario) conocen
  automáticamente las reglas de validación
● Hay muchas reglas de validación en el core
● Es fácil escribir tus proprias reglas de
  validación
● Las reglas se puede desactivar o modificar
Resumen de bake


● Se usa para generar projectos,
  ficheros/clases o todo a la vez
● Interactivo o no
● Dinámico (Scaffolding) o no
● Las plantillas de cada clase se puede
  modificar
● Detecta relaciones en la BBDD
● El código se adapta a las relaciones
● No es obligotario usarlo
Explorando en mas detalle


● Mensajes de error útiles
Ejemplo mensaje de error
Explorando en mas detalle


● Mensajes de error útiles
● Debug Kit - un gran ayuda
Debug Kit - installado
Debug Kit - Session data
Debug Kit - Query Log
Debug Kit - Timer




   26 (ms)
Explorando en mas detalle


● Mensajes de error útiles
● Debug Kit - un gran ayuda
● Otras comandos de la consola
La consola
Explorando en mas detalle


●   Mensajes de error útiles
●   Debug Kit - un gran ayuda
●   Otras comandos de la consola
●   Projectos útiles/ejemplos
Proyectos interesantes




●   http://croogo.org- Blog/CMS
●   http://my.candycane.jp - Issue tracker
●   http://cakepackages.com - Plugin index
●   Mark Story Asset Compress
Explorando en más detalle


●   Mensajes de error útiles
●   Debug Kit - un gran ayuda
●   Otras comandos de la consola
●   Projectos utiles/ejemplos
●   Para leer: CakePHP 1.3 Application
    Cookbook - Mariano Iglesias 2011
Intro a cakephp
¿Preguntas?
 http://slideshare.net/AD7six/intro-a-cakephp

Más contenido relacionado

PDF
Intro a cakephp
ODP
Taller introduccion symfony2
PDF
Semana 2 Configuración entorno de desarrollo
PPSX
Vue + Typescript: Decorators vs. Extend, Fight!
PDF
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
ODP
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
PDF
Symfony en Drupal 8 - DrupalCamp Spain
Intro a cakephp
Taller introduccion symfony2
Semana 2 Configuración entorno de desarrollo
Vue + Typescript: Decorators vs. Extend, Fight!
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Symfony en Drupal 8 - DrupalCamp Spain

La actualidad más candente (20)

PDF
Composer: Gestionando dependencias en PHP
PDF
Semana 5 Angular Rutas y Controladores
PDF
Gulp js php sevilla 28 septiembre 2016
PPTX
PowerShell para administradores
KEY
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
PDF
Infografia empleados laravel
PDF
Mis primeros pasos con Symfony 2
PPTX
MVC en CakePHP 2.0
PDF
Deployer PHP. Presentación para #PHPSevilla
PDF
WP-CLI dispara tu productividad, simplifica tus rutinas
PDF
Gwt III - Avanzado
PPTX
Selenium
PPTX
Testing con selenium
PPTX
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
PPTX
Como hacer de todo con PowerShell
PPTX
Angular Conceptos Practicos 2
PDF
Introducción a Angular
PDF
Desarrollo con Java y metodologías agiles
PDF
Infografia farmacia laravel
PDF
Configurar entorno Android
Composer: Gestionando dependencias en PHP
Semana 5 Angular Rutas y Controladores
Gulp js php sevilla 28 septiembre 2016
PowerShell para administradores
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Infografia empleados laravel
Mis primeros pasos con Symfony 2
MVC en CakePHP 2.0
Deployer PHP. Presentación para #PHPSevilla
WP-CLI dispara tu productividad, simplifica tus rutinas
Gwt III - Avanzado
Selenium
Testing con selenium
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Como hacer de todo con PowerShell
Angular Conceptos Practicos 2
Introducción a Angular
Desarrollo con Java y metodologías agiles
Infografia farmacia laravel
Configurar entorno Android
Publicidad

Similar a Intro a cakephp (20)

PDF
Introducción a Cake PHP Framework
PDF
PPT
Iniciación Con CakePHP
PDF
Tutorial de cakePHP itst
PDF
Como preparar un buen pastel con CakePHP
PPSX
Desarrollo rapido de aplicaciones web en php con el framework cakephp + scaffold
ZIP
CakePHP Grandes Empresas
PDF
Conceptos basicos en CakePHP
PPT
Consola Cake Php, Uso Y Testing
PPTX
Desarrollo responsivo con CakePHP y Foundation
PPTX
Integracion Cakephp y Bootstrap
PDF
Zen Scaffolding - Programador PHP
PDF
Doctrine symfony
PDF
Doctrine symfony
PPTX
1 Introduccion - Curso Cakephp y PostgreSql
PDF
Búsqueda del framework ideal de framework
PPTX
CakePHP parte 2
PPTX
Symfony-Community: Introducción a Symfony Framework
PDF
Clase 3 instalación y primeros pasos
Introducción a Cake PHP Framework
Iniciación Con CakePHP
Tutorial de cakePHP itst
Como preparar un buen pastel con CakePHP
Desarrollo rapido de aplicaciones web en php con el framework cakephp + scaffold
CakePHP Grandes Empresas
Conceptos basicos en CakePHP
Consola Cake Php, Uso Y Testing
Desarrollo responsivo con CakePHP y Foundation
Integracion Cakephp y Bootstrap
Zen Scaffolding - Programador PHP
Doctrine symfony
Doctrine symfony
1 Introduccion - Curso Cakephp y PostgreSql
Búsqueda del framework ideal de framework
CakePHP parte 2
Symfony-Community: Introducción a Symfony Framework
Clase 3 instalación y primeros pasos
Publicidad

Más de betabeers (20)

PPSX
IONIC, el framework para crear aplicaciones híbridas multiplataforma
PDF
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
PPTX
Blockchain: la revolución industrial de internet - Oscar Lage
PDF
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
PDF
Desarrollo web en Nodejs con Pillars por Chelo Quilón
PDF
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
PDF
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
PDF
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
PPTX
Introducción a scrum - Rodrigo Corral (Plain Concepts)
PPTX
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
PPTX
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
PDF
Elemental, querido Watson - Caso de Uso
PDF
Seguridad en tu startup
PPTX
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
PDF
Buenas prácticas para la optimización web
PDF
La magia de Scrum
PDF
Programador++ por @wottam
PPTX
RaspberryPi: Tu dispositivo para IoT
PDF
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
PDF
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
IONIC, el framework para crear aplicaciones híbridas multiplataforma
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Blockchain: la revolución industrial de internet - Oscar Lage
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Desarrollo web en Nodejs con Pillars por Chelo Quilón
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Elemental, querido Watson - Caso de Uso
Seguridad en tu startup
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Buenas prácticas para la optimización web
La magia de Scrum
Programador++ por @wottam
RaspberryPi: Tu dispositivo para IoT
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015

Intro a cakephp

  • 2. Sobre mi ● Andy Dawson ● @AD7six ● Blogger infrequente AD7six.com ● Desarrollador desde 1999 ● PHP desde 2005 ● CakePHP ○ desde 2005 ○ Autor de muchos plugins ○ Miembro del equipo core de CakePHP
  • 5. ¿Por que usar un framework? ● Estructura ● Se concentra en implementar la aplicación ● Evita problemas comunes ● Consigue un código reutilizable ● Se beneficia del conocomiento de otros desarolladores ● Desarrollo Rápido (RAD)
  • 6. Los problemas de los frameworks ● Estructura ● Falta de flexibilidad ● Complejidad ● Tiempo para aprender ● Rendimiento ● Hay muchos - ¿cómo elejir?
  • 7. CakePHP en breve ● Convención sobre Configuración ● Estructura MVC ● Fácil de usar, rápido de aprender ● RAD prototyping (scaffolding) ● Generdor de código (bake) ● unit test (phpunit) ● Gran cantidad de plugins publicados ● Gran comunidad ● versión 1.3, php 4.3.2+ ● versión 2.0, php 5.2.9+ (y pdo)
  • 8. Como Empezar ● Principal: http://cakephp.org ● Repo: http://github.com/cakephp/cakephp ● Docs: http://book.cakephp.org/2.0/ ● El grupo google: cakephp-esp ● Irc: Freenode #cakephp-es
  • 10. Ficheros y carpetas ● ROOT ○ app ■ Controler ■ Model ■ View ■ weboot ● css ● js ○ lib ■ Cake ○ plugins ○ vendors
  • 11. Ficheros y carpetas ● ROOT ○ app ■ Controler ■ Model ■ View ■ weboot ● css ● js ○ lib ■ Cake La estructura es una ○ plugins "convención" - Se puede ○ vendors mover fácilmente
  • 12. Bake - un generador de todo [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est case [Q]uit What would you like to Bake? (D/M/V/C/P/F/T/Q) >
  • 13. Primeros pasos: Prototipo Como hacer el blog-tutorial en 15 segundos 1. Cargar sql en BBDD 2. Generar controlador 3. Ver resultado
  • 14. 1) SQL /* First, create our posts table: */ CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL ); /* Then insert some posts for testing: */ INSERT INTO posts (title,body,created) VALUES ('The title', 'This is the post body.', NOW()); INSERT INTO posts (title,body,created) VALUES ('A title once again', 'And the post body follows.', NOW()); INSERT INTO posts (title,body,created) VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
  • 15. 2) Generar Controllador [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake Controller Posts Welcome to CakePHP v2.0.4 Console --------------------------------------------------------------- App : cakephp Path: /home/andy/www/apps/cakephp/ --------------------------------------------------------------- Baking controller class for Posts... Creating file /home/andy/www/apps/cakephp/Controller/PostsController.php Wrote `/home/andy/www/apps/cakephp/Controller/PostsController.php` Bake is detecting possible fixtures... Baking test case for Posts Controller ... Creating file /home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php Wrote `/home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php`
  • 17. Un Controlador de Scaffolding <?php // Controller/PostsController.php App::uses('AppController', 'Controller'); /** * Posts Controller * */ class PostsController extends AppController { /** * Scaffold * * @var mixed */ public $scaffold; }
  • 18. Puntos de interés ● Definir BBDD -> generar código ● Si no existe un modelo - Cake usará un modelo genérico ● Es todo dinámico - no hay código para modificar ● Útil mientras el diseño de la BBDD no esté definido
  • 19. ¿Cambios en la BBDD? ALTER TABLE posts ADD COLUMN published TINYINT(1) DEFAULT 0 AFTER body;
  • 20. Las vistas se adaptan
  • 21. Siguiente Fase: Bake MVC Como hacer el blog-tutorial en 15 segundos. Otra vez. 1. Cargar sql en BBDD 2. Generar MVC 3. Ver resultados
  • 22. 2) Generar MVC [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake all Post -q Baking model class for Post... Baking controller class for Posts... Baking test case for Posts Controller ... Baking `index` view file... Baking `view` view file... Baking `add` view file... Baking `edit` view file... Bake All complete
  • 24. Diferencias con Scaffolding Ahora hay: Controller/PostsController.php Model/Post.php Test/Case/Controller/PostsControllerTest.php Test/Fixture/PostFixture.php View/Posts/add.ctp View/Posts/edit.ctp View/Posts/index.ctp View/Posts/view.ctp
  • 25. No es dinámico <?php // Controller/PostsController.php App::uses('AppController', 'Controller'); /** * Posts Controller */ class PostsController extends AppController { /** * index method */ public function index() { $this->Post->recursive = 0; $this->set('posts', $this->paginate()); } ...
  • 26. Contiene ejemplos de uso <?php // View/Posts/edit.ctp ?> <div class="posts form"> <?php echo $this->Form->create('Post');?> <fieldset> <legend><?php echo __('Edit Post'); ?></legend> <?php echo $this->Form->input('id'); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->input('published'); ?> </fieldset> <?php echo $this->Form->end(__('Submit'));?> </div> ...
  • 27. Se puede hacer aun más sencillo <?php // View/Posts/edit.ctp ?> <div class="posts form"> <?php echo $this->Form->create(); echo $this->Form->inputs(); echo $this->Form->end(); ?> </div>
  • 28. Puntos de interés ● Cuidado con bake en modo no-interactivo, sobrescribe ficheros sin confirmar ● Scaffolding y el código de bake son visualmente iguales ● Usa Scaffolding si es útil para ti - o salta directamente a código que puedas tocar. ● Pero usa bake - ahorra mucho tiempo
  • 29. Modelos - clases importantes ● "Fat Models, Skinny Controllers" es un dicho al que hay que hacer caso ● Es mejor llena los modelos con logica, no los controlladores ● Ejemplo - validación
  • 31. La razón - un modelo flaco <?php // Model/Post.php App::uses('AppModel', 'Model'); /** * Post Model * */ class Post extends AppModel { }
  • 32. Añadir validación (con Bake) <?php App::uses('AppModel', 'Model'); class Post extends AppModel { public $displayField = 'title'; public $validate = array( 'title' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Escribe un titulo, por favor' ), 'minlength' => array( 'rule' => array('minlength', 10), 'message' => 'Un poquito mas...' ), ...
  • 34. Puntos de interés ● Las vistas (el ayudante formulario) conocen automáticamente las reglas de validación ● Hay muchas reglas de validación en el core ● Es fácil escribir tus proprias reglas de validación ● Las reglas se puede desactivar o modificar
  • 35. Resumen de bake ● Se usa para generar projectos, ficheros/clases o todo a la vez ● Interactivo o no ● Dinámico (Scaffolding) o no ● Las plantillas de cada clase se puede modificar ● Detecta relaciones en la BBDD ● El código se adapta a las relaciones ● No es obligotario usarlo
  • 36. Explorando en mas detalle ● Mensajes de error útiles
  • 38. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda
  • 39. Debug Kit - installado
  • 40. Debug Kit - Session data
  • 41. Debug Kit - Query Log
  • 42. Debug Kit - Timer 26 (ms)
  • 43. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola
  • 45. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola ● Projectos útiles/ejemplos
  • 46. Proyectos interesantes ● http://croogo.org- Blog/CMS ● http://my.candycane.jp - Issue tracker ● http://cakepackages.com - Plugin index ● Mark Story Asset Compress
  • 47. Explorando en más detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola ● Projectos utiles/ejemplos ● Para leer: CakePHP 1.3 Application Cookbook - Mariano Iglesias 2011