Pergunta

Eu tenho dois controladores que compartilham a maior parte de seu código (mas deve ser, no entanto, diferentes controladores). A solução óbvia (para mim, pelo menos) é criar uma classe, e fazer os dois controladores de herdar a partir dele. A coisa é ... onde colocá-lo? Agora eu tê-lo em app_controller.php, mas é meio confuso lá.

Foi útil?

Solução

No bolo, os componentes são usados ??para lógica de loja que pode ser usado por vários controladores. O diretório é / app / controllers / componentes. Por exemplo, se você tinha alguma lógica de utilidade compartilháveis, você teria um objeto chamado UtilComponent e um arquivo em / app / Controladores / componentes chamado UtilComponent.php.

<?php
class UtilComponent extends Object {
    function yourMethod($param) {
        // logic here.......

        return $param;
    }
}
?>

Então, em suas classes do controlador, você deve adicionar:

var $components = array('Util');

Em seguida, você chamar os métodos como:

$this->Util->yourMethod($yourparam);

Mais informações:

Documentação

Outras dicas

Btw, se a razão para "eles devem ser controladores separados" é o URLs que você necessita. Lembre-se que você pode usar o encaminhamento:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top