¿Dónde poner el controlador de la clase padre en CakePHP?
-
02-07-2019 - |
Pregunta
Tengo dos controladores que comparten la mayor parte de su código (pero deben ser, sin embargo, controladores diferentes). La solución obvia (para mí, al menos) es crear una clase y hacer que los dos controladores hereden de ella. La cosa es ... ¿dónde ponerlo? Ahora lo tengo en app_controller.php, pero está un poco desordenado allí.
Solución
En la torta, los componentes se utilizan para almacenar la lógica que pueden ser utilizados por varios controladores. El directorio es / app / controllers / components. Por ejemplo, si tuviera alguna lógica de utilidad compartida, tendría un objeto llamado UtilComponent y un archivo en / app / controlers / components llamado UtilComponent.php.
<?php
class UtilComponent extends Object {
function yourMethod($param) {
// logic here.......
return $param;
}
}
?>
Luego, en tus clases de controlador, agregarías:
var $components = array('Util');
Luego llamas a los métodos como:
$this->Util->yourMethod($yourparam);
Más información:
Otros consejos
Por cierto, si el motivo de " deben ser controladores separados " es la URL que necesita. Recuerda que puedes usar enrutamiento:
Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));