Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoa, bom queria que caso possam me tirem uma dúvida.
/applications/core/interface/imageproxy/imageproxy.php?img=http://laravelbook.com/images/laravel-architecture/laravel-mvc-components.png&key=6fab0c5d08e18c7976b7fd5631d5b28ff444a9eabd39e10dfbd05293109c552f" alt="laravel-mvc-components.png" />
Analisando está imagem podemos notar que o usuário acessar uma rota no navegador o mesmo envia esta para o servidor que acessar um controller (No meu caso o sistema capta a rota automaticamente) esse controller acessa uma model (acesso a dados) que retorna para este controller os dados requeridos. Ai vem minha dúvida.
Supondo que eu tenha a seguinte tabela:
---------------------------------------------------
| id | Nome | Descricao |
---------------------------------------------------
| 1 | Maria | Maria é legal |
---------------------------------------------------
Minha model retorna maria para uma suposta edição de dados da mesma, não se se é errado mas algo como:
public function listEdit($id){
$app = $this->db->prepare("select * from pessoas where id = {$id}");
$app->execute();
return $app;
}
Pronto com esse método dentro da minha model já consigo o que preciso, agora me vem as dúvidas, devo jogar getters e setters no controller para que os envie a View? ou acesso direto da View? Pois pelo que tenho lido a view muita vezes acaba acessado dados da model quando preciso.
Seria errado eu criar getters e setters no controller e um método para atribuir esses dados a essas variáveis privadas ou deveria criar esses métodos mágicos na própria model acessá-las no controller e as enviar para view?
Então eis a questão é realmente necessário criar um private pra cada campo existente em uma tabela e acessa-los via get e set? Caso sim melhor colocar no controller ou na model?
Amigo, a ilustração que você postou já responde boa parte das suas questões.
A camada de visualização não possui acesso ao modelo. Ela possui acesso aos dados que você permite (através da camada de controle) que ela visualize para exibir as informações desejadas.
Sobre a necessidade de criar os campos, isso depende de como o seu ORM trabalha, mas geralmente eles são criados e algumas vezes são inclusive definidas as especificações das colunas. No Phalcon, por exemplo, isso é opcional, mas fica dessa forma: https://docs.phalconphp.com/pt/latest/reference/models-metadata.html
Sobre onde inserir esses campos, sempre no Model. É lá que fica tudo o que é relacionado ao negócio/modelo.
Veja o Doctrine também: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html#starting-with-the-product
Se for um projeto pequeno,não há problemas em usar o model em si dentro do controller
evite o maximo possível usar models na view.
A view é para mostrar e não para controlar.
Passe todas as variáveis que serão usadas na view pelo controller.