CakePHP + Scaffolding

Logo CakePHPHace aproximadamente un mes que me había animado a conocer un poco mas a fondo cakephp, un framework MVC en y para php. Pero como tantas otras veces me había quedado a medias presionado por la carga de trabajo por aquel entonces. Ahora ha surgido de nuevo la oportunidad y parece que será la definitiva.

Una de las características mas cool (y lo dicen ellos en su manual “Cake’s Scaffolding is Pretty Cool”), es lo que ellos llaman Scaffolding, un sistema mediante el cual tu simplemente defines un controlador que trabaja sobre un modelo y cake te crea toda la interfaz de gestión (crear, editar, eliminar elementos) de esa tabla.

Si utilizas una nomenclatura de tablas y campos clave estándar para cake, no necesitaras ni tan siquiera definir un modelo, simplemente será suficiente con crear por ejemplo este código:
[php]
class BiciController extends AppController
{
var $scaffold;
//var $uses = array('Auto'); // Si quisieras utilizar un modelo y este tuviera un nombre diferente de Bici
}
?>
[/php]
en un fichero bicis_controller.php en la raiz de app/controllers.

Si utilizas tu propia nomenclatura o heredas un diseño de BD ya creado, tienes diferentes variables para configurarlo, en este caso necesitarás crear el BicisController anterior y además el modelo Bici:
[php]
class Bici extends AppModel
{
var $name = "Bici";
var $useTable = "bicis"; // Aquí podríamos indicar que tabla está utilizando este modelo
var $primaryKey = "idbici"; // Si la clave principal de nuestra tabla car es diferente de id
?>
[/php]
y lo almacenamos como bici.php en app/models.

Seguro que estáis pensando que para este caso tan sencillo claro que está muy bien, pero, ¿y cuando tenemos un modelo de datos mas complejo con diferentes tipos de relaciones?. Pues también tenemos opciones. Cake soporta 4 tipos de relaciones entre tablas: hasOne, hasMany, belongsTo y hasAndBelongsToMany. Como ejemplo imaginemos que la Bici definida en el modelo anterior es de un solo color. Esta relación la definimos así en la clase modelo Bici:
[php]
class Bici extends AppModel
{
var $name = "Bici";

var $belongsTo = array('Color' =>
array('className' => 'Color',
'conditions' => ”,
‘order’ => ”,
‘foreignKey’ => ‘color_id’
)
);
?>
[/php]

y debemos definir el modelo del Color:
[php]
class Color extends AppModel
{
var $name = "norma";
var $displayField = "titulo"; // El campo que se mostrará en el select que nos permitirá relacionar el car con el color
}
?>
[/php]

Para terminar decir que cakephp es mucho mas que scaffolding. Esta es una forma de crear una interfaz sencilla y de una forma muy rápida, pero cake nos permite crear nuestras propias interfaces, nuestra propia lógica de negocio, validaciones, etc.
Para mas información ya sabéis www.cakephp.org

  • jorge

    Excelente la explicacion. Soy nuevo en esto de cakePHP y me esta empezando a gustar.

    Saludos