[CodeIgniter] Definição de Controller, Modelo (novamente)
Newton Wagner
newtonweb em gmail.com
Quinta Dezembro 6 15:25:59 BRST 2007
Daniel,
O próprio sistema já redireciona de volta para o formulário em caso de
erro? Ou você pode executar a Validation::run() de qualquer lugar que
ele irá armazenar uma mensagem de erro?
Eu sou a favor da Validation, acho que ela facilita bastante o
trabalho, mas sou contra a validação no Controller.
Se você faz metade da validação no Modelo, e outra metade no Controle,
já pode estar criando confusão só por isso.
O fato de um CPF ser obrigatório ou não, é uma regra de negócio. E
regras de negócio precisam estar definidas no Modelo.
Pense assim.. você tem um sistema pronto, e o usuário informa que está
alterando justamente esta regra. O CPF não era obrigatório, mas agora
o sistema deve obrigar o seu preenchimento. Se você distribuir a
validação no seu sistema, será mais difícil de resolver o problema, se
tiver certeza que está em um método chamado: validarAntesInserir() do
Model de Usuário, vai saber exatamente onde têm de mexer.
Esse é o objetivo da separação das camadas. :). E negócio é negócio e
deve ficar no modelo, conforme diz o MVC.
--
Newton Wagner
skype: newtonwagner
msn/gtalk: newtonweb em gmail.com
http://www.newtonwagner.net/blog
- http://www.owshit.com.br/
Em 06/12/07, Daniel Costa<danielcosta em gmail.com> escreveu:
> Newton,
>
> Acho que depende do tipo da validação que você tá fazendo. Se for validação
> de campo obrigatório ou algo assim, porque não usar os recursos que o
> framework já oferece e fazer essa primeira validação no controller? Afinal é
> ele que chama uma view de erro caso exista erro.
>
> E assim como exemplifiquei em outra thread, as validações que dependem de
> acesso a banco ou de regras de negócios mais apuradas, aí sim ficam no model
> responsável.
>
> On Dec 6, 2007 10:22 AM, Newton Wagner < newtonweb em gmail.com> wrote:
> > Resumo:
> >
> > - Modelo: Camada de negócio e, no caso do CI, também de persistência.
> > Nada te impede de ter outra camada só pra persistência, caso ache
> > melhor.
> >
> > - Visualização: Camada de apresentação da aplicação. Tem a
> > inteligência de exibição das informações para o usuário.
> >
> > - Controle: Camada responsável por intermediar a comunicação do
> > usuário (realizada através do uso de uma interface (visualização) e as
> > regras de negócio da aplicação (modelo).
> >
> >
> > Esquentando um pouco mais a discussão:
> >
> > Qual camada deve ser responsável por validar os dados digitados pelo
> > usuário numa tela de inclusão?
> >
> >
> > --
> > Newton Wagner
> >
> > skype: newtonwagner
> > msn/gtalk: newtonweb em gmail.com
> >
> > http://www.newtonwagner.net/blog
> > - http://www.owshit.com.br/
> >
> >
> >
> > Em 06/12/07, Luciano Soares<lussterl em gmail.com > escreveu:
> >
> >
> >
> > > Osdeni está errado sim. Pelo menos até onde meus conhecimentos e estudos
> > > alcançam.
> > >
> > > Na outra thread que estamos falando disso eu passei mais informações.
> > >
> > > Mas acho essa uma discussão boa pra todo o pessoal.
> > >
> > > Continuamos pela outra thread ou por essa?
> > >
> > > Vou mandar aqui o conteúdo de novo.
> > >
> > > Essa assunto sobre regras de negócio e MVC já foi discutido pelo pessoal
> do
> > > grupo da lista php que participo há um tempo.
> > >
> > > Estou procurando aqui o link pra thread.
> > >
> > > Mas achei ese conteúdo aqui.
> > >
> > >
> > > "A arquitetura MVC - (Modelo Visualização Controle) fornece uma maneira
> de
> > > dividir a funcionalidade envolvida na manutenção e apresentação dos
> dados de
> > > uma aplicação. A arquitetura MVC não é nova e foi originalmente
> desenvolvida
> > > para mapear as tarefas tradicionais de entrada , processamento e saída
> para
> > > o modelo de interação com o usuário. Usando o padrão MVC fica fácil
> mapear
> > > esses conceitos no domínio de aplicações Web multicamadas.
> > >
> > > Na arquitetura MVC o modelo representa os dados da aplicação e as regras
> do
> > > negócio que governam o acesso e a modificação dos dados. O modelo mantém
> o
> > > estado persistente do negócio e fornece ao controlador a capacidade de
> > > acessar as funcionalidades da aplicação encapsuladas pelo próprio
> modelo.
> > >
> > > Um componente de visualização renderiza o conteúdo de uma parte
> particular
> > > do modelo e encaminha para o controlador as ações do usuário; acessa
> também
> > > os dados do modelo via controlador e define como esses dados devem ser
> > > apresentados.
> > >
> > > Um controlador define o comportamento da aplicação , é ele que
> interpreta as
> > > ações do usuário e as mapeia para chamadas do modelo. Em um cliente de
> > > aplicações Web essas ações do usuário poderiam ser cliques de botões ou
> > > seleções de menus. As ações realizadas pelo modelo incluem ativar
> processos
> > > de negócio ou alterar o estado do modelo. Com base na ação do usuário e
> no
> > > resultado do processamento do modelo , o controlador seleciona uma
> > > visualização a ser exibida como parte da resposta a solicitação do
> usuário.
> > > Há normalmente um controlador para cada conjunto de funcionalidades
> > > relacionadas." http://www.macoratti.net/vbn_mvc.htm
> > >
> > > Então, o modelo seria responsável por representar e persistir os dados
> além
> > > das regas de negócio.
> > >
> > > A visão renderiza o conteúdo e encaminha as ações para o contralador.
> > >
> > > O controlador é o responsável por toda a interconexão das acções com os
> > > dados.
> > >
> > >
> > >
> > >
> > > Em 06/12/07, Osdeni José Sadzinski < osdeni em gmail.com > escreveu:
> > > >
> > > > No Controller ficam as regras de negócio (if elses, direções,
> validações
> > > entre outros, e chamadas de models)
> > > > Ja no modelo ficam as persistências dos dados (sqls)
> > > >
> > > > Estou errado?
> > > >
> > > > --
> > > > Atenciosamente,
> > > >
> > > > Osdeni José Sadzinski
> > > > E-mail: osdeni em gmail.com
> > > > MSN: osdeni em hotmail.com
> > > > _______________________________________________
> > > > Lista mailing list
> > > > Lista em codeigniter.com.br
> > > >
> > >
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > Lista mailing list
> > > Lista em codeigniter.com.br
> > >
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> > >
> >
> > _______________________________________________
> > Lista mailing list
> > Lista em codeigniter.com.br
> >
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
>
>
>
> --
> Daniel Costa
> ::. http://danielcosta.info
> _______________________________________________
> Lista mailing list
> Lista em codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>
Mais detalhes sobre a lista de discussão Lista