Convenciones de nombres en cakephp

Aquí tenemos la lista de convenciones de nombres:

Convenciones de nombres en cakephp

Hay un problema. CakePHP cambia del plural al singular en controladores/modelos, y si tenemos una tabla como ‘Autores’ nos generará un modelo llamado ‘Autore’. Esto tiene dos soluciones, usar en estos casos un plural inglés en las tablas (autors) o añadir un par de líneas en /app/Config/bootstrap.php:

Inflector::rules('singular', array('rules' => array('/(.*)res$/i' => '\1r', '/(.*)nes$/i' => '\1n', '/(.*)des$/i' => '\1d', '/(.*)ses$/i' => '\1s'), 'irregular' => array(), 'uninflected' => array()));
Inflector::rules('plural', array('rules' => array('/(.*)r$/i' => '\1res', '/(.*)n$/i' => '\1nes', '/(.*)d$/i' => '\1des', '/(.*)s$/i' => '\1ses'), 'irregular' => array(), 'uninflected' => array() ) );
Visto aquí:

Rutas en CakePHP

Las rutas en cakephp tienen un formato definido:

http://example.com/controlador/accion/param1/param2/param3

Aunque también se pueden usar parámetros con nombres:

Ejemplos de todo:

URL: /monos/saltar
Dirige a: MonosController->saltar();

URL: /productos
Dirige a: ProductosController->index();

URL: /tareas/ver/45
Dirige a: TareasController->ver(45);

URL: /donaciones/ver/recientes/2001
Dirige a: DonacionesController->ver('recientes', '2001');

URL: /contenidos/ver/capitulo:modelos/seccion:asociaciones
Dirige a: ContenidosController->ver();
$this->passedArgs['capitulo'] = 'modelos';
$this->passedArgs['seccion'] = 'asociaciones';

Utilizar otra vista para renderizar una acción

En cakePHP se busca por defecto para cada acción la vista que tenga su nombre. Pero podemos indicar que use una vista concreta. Por ejemplo podemos tener lo siguiente en el controlador:

 public function suma($a,$b){
 $this->set('resultado',$a+$b);
 $this->render('/Prueba/resultado');
 }

 public function mayor($a,$b){
 if ($a<$b) $a=$b;
 $this->set('resultado',$a);
 $this->render('/Prueba/resultado');
 }

Y la siguiente vista:

// archivo \Prueba\resultado.ctp

<h2>El resultado es <?=$resultado?></h2>