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í.

¿Fue útil?

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:

Documentation

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'));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top