Buscar aquí

martes, 14 de junio de 2011

Usar un controlador sin tener una tabla asociada CakePHP


En ocasiones he necesitado tener un controlador que no tiene un modelo (tabla en la base de datos asociado). La forma de lograrlo sin que arroje el error:
Error: Database table home for model Home was not found.

Poner el siguiente codigo en la definición del controlador:

class HomeController extends AppController { 

var $name = 'Home';
var $uses = array(); //Asi estamos definiendo que modelos usara y al dejarlo vació pues no busca ninguno.


function index(){
}


}


Gracias,
Luisa Quiroga

lunes, 13 de junio de 2011

Tablas con nombres compuestos por dos palabras en CakePhp

Programando en el framework cakephp me tomo un tiempo averiguar cual era realmente la convención para usar nombres compuestos por dos palabras para tablas en el framework, dado que la documentación no es muy precisa al respecto, pero la cosa es asi:

Nombre de tabla:
celulas_cuerpos     //Las tablas se nombran en plural y separadas por underscore

Nombre del controlador:
celulas_cuerpos_controller.php //Se nombra en plural y separado por underscore

Sintaxis en el controlador:
class CelulasCuerposController extends AppController {
   var $name = 'CelulasCuerpos';
   function add(){
      if(!empty($this->data)){
         if($this->CelulasCuerpo->save($this->data)) {
            $this->Session->setFlash("Registro guardado!");
              $this->redirect('/celulas'); }
          }
      }
  }
Lo mas importante en la sintaxis dentro del controlador es que para acceder al modelo debe ser en Camel Case pero contrario a toda lógica humana o del cook book es la primera en plural y la segunda en singular.

Nombre de la vista
La vista debe ir en una carpeta llamada /views/celulas_cuerpos y dentro los nombres de las vistas normalito

Acceso URL 
Para acceder a la funcion es www.ejemplo.com/celulas_cuerpos/add
Y eso es, me funciono!!!!

Gracias,

Luisa