Pergunta

Quanto melhores práticas ir é esse recomendado? Eu tenho um controlador de comentários + modelo que precisa ser chamado em um controlador de artigos e perfis. Os comentários controlador carrega automaticamente o modelo comentários.

É aceitável para chamar os comentários controlador diretamente a partir do controlador de itens e de perfil, ou é o caminho "melhores práticas" para chamar o modelo comentários em vez disso?

Eu pergunto porque em kohana, a vista não é uma classe singleton por isso, se eu fosse para chamar um controlador de dentro de outro controlador de eu acabar com dois pontos de vista. Por outro lado, se eu fosse apenas para chamar o modelo, haveria código duplicado dentro do controlador itens e perfis.

especialistas Tudo que você MVC ajuda! =)

Foi útil?

Solução

Geralmente, eu iria para a abordagem "Fat Model".

Eu não tenho certeza o código que você está realmente preocupado com duplicação.

Existem algumas maneiras que você poderia fazer isso:

Primeira maneira: - interrogar os seus comentários modelar para retornar alguns comentários. - Passar o comentário de dados em seu ponto de vista. - tornar os comentários na vista, possivelmente usando alguns view helper

Segundo Way: - Perceba que não há razão para o seu ponto de vista não pode falar diretamente com o seu modelo. -. Escrever um ajudante vista que agarra os dados de que necessita diretamente do modelo, e torna-lo

Eu prefiro o segundo caminho. Algumas pessoas têm um problema deixando sua visão camada de falar com o modelo (de um modo somente leitura!), Mas eu não sou um deles.

Outras dicas

Se você usar Kohana 3, você pode se beneficiar do recurso HMVC. Você pode executar controladores dentro de controladores.

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

Confira no link acima para alguns exemplos

Eu diria que isso depende do que seus retornos controlador.

Se o controlador pode retornar DTOs / modelos, então tudo bem, chamando um controlador é uma boa idéia.

Seu controlador define uma rigorosa e documentada, e espero estáveis ??pontos de entrada para a sua funcionalidade. Portanto, você pode completamente ignorar a implementação de comentários, ou alterá-lo à vontade, contanto que você não alterar a assinatura do método Controller.

No entanto, se o seu controlador é incapaz de retornar dados brutos, então é definitivamente prolematic, porque você está recebendo html (ou outra marcação) em troca. Isso significa que você terá que tubo que html diretamente na vista que você quer, ou extrair os dados a partir dele. Tanto daqueles é uma má idéia.

canalizando a html cru implica que, se você alterar o modo de exibição para comentários, a exibição de comentários sobre o módulo Perfil inevitavelmente mudar. este pode ser o que quiser, mas eu ir para a flexibilidade.

Agora, se você queria de dados, você terá que extrair os dados da marcação a sua visão retornou, o que é pesado e contra produtivo.

Se você está tentando chamar um método estático, você pode simplesmente chamar a função diretamente. Por exemplo:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top