Vejam a definição das camadas do MVC na Wikipedia:

"The model-view-controller solves this problem by decoupling data
access and business logic from data presentation and user interaction,
by introducing an intermediate component: the controller."

O MVC soluciona este problema (separação da lógica de negócio e
apresentação), separando o acesso aos dados e lógica de negócio da
apresentação dos dados e interação do usuário, introduzindo um
componente intermediário, o Controle.


O Controle nada mais é do que o intermediário entre View e Model.
Validar campos é "business logic", lógica de negócio e, portanto, é
responsabilidade do modelo.


Claro que nada impede de existirem variações desta implementação,
assim como disseram aqui que o CI valida no Controller. Provavelmente
eles fizeram isso pois o foco do framework não é ser fiel ao MVC, e
sim agilizar o máximo o desenvolvimento.

Outras coisas poderiam manter a mesma agilidade e ainda sim ser fiel
ao MVC, mas é tudo uma questão de evolução do software também. ;).



Em 24/01/08, Marco Telles<[EMAIL PROTECTED]> escreveu:
> Desde que surgiu essa discussão da outra vez, e após ler todos os links
> que enviaram, eu passei a manter o controller só para controle mesmo.
> Andei fuçando no Zend e lendo alguns tutoriais a orientação é essa
> também, que já foi dada aqui.
> Então passei a usar o validation dentro do model. O controller só aciona
> ele e recebe o resultado para então seguir em frente.
> Funciona perfeito, sem problema e ficou muito mais claro para mim.
>
> Abs
>
> Muita sorte para nós!
>
> Marco Telles
>
> #############
> # Pier de Ipanema ( http://www.pierdeipanema.com.br/ )
>
>
>
> Luciano Soares escreveu:
> >  Newton vc defende a validação dentro do modelo, então o modelo com o
> > Validation estaria acessando os dados via POST pois é isso que o
> > validation faz.
> >
> >  Eu, assim que tiver tempo, vou tentar colocar o Validation dentro dos
> > meus models pra ver como fica.
> >
> > Em 24/01/08, *Newton Wagner* <[EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>> escreveu:
> >
> >     Po, bem observado.
> >
> >     A camada de modelo não deve nem lembrar que POST existe. Isso é
> >     responsabilidade da classe de controle.
> >
> >     Na minha opinião, o seu Controller deveria receber as variáveis do
> >     post e passar pra um objeto (VO, como já disseram) ou um array.
> >
> >     Depois eu chamaria o método inserir() do meu modelo.
> >
> >     Como eu ainda acho que validação de negócio (logo, de campos do
> >     formulário), deve ser feita dentro do seu Modelo. Estou enferrujado e
> >     não sei o comportamento da classe Validation dentro do modelo, mas eu
> >     usaria ela lá.
> >
> >     Sendo assim, o método inserir() chamaria o método
> >     validarAntesInserir() passando mais uma vez o objeto ou array. Se
> >     passar pela validação, segue a inserção, se não, retorna erro pro
> >     controle que exibe na tela.
> >
> >
> >
> >     Em 24/01/08, Rafael V. de Oliveira<[EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>> escreveu:
> >     >
> >     >  Só uma dúvida.
> >     >
> >     >  Caso vc utilize o Model Livro para outra coisa que não seja o
> >     insert
> >     > (listar, por exemplo). Provavelmente vc não vai ter a variável
> >     de post
> >     > ainda, pois num view que só tem listar (select), a chance de ter
> >     algum post
> >     > é baixa.
> >     >
> >     >  E aí meu amigo? No construtor do model vc alocou memória para 3
> >     variaveis
> >     > que nunca vai usar. Não entendi o motivo.
> >     >  Não seria mais fácil vc utilizar o input->post no método que vc
> >     chamou, ao
> >     > inves de chamar no construtor?
> >     >
> >     >  Paulo Balzi escreveu:
> >     > Galera, voltando o assunto, mas agora vamos pra prática no CI.
> >     >
> >     >  Vou explicar o exemplo e do jeito q eu achei q tinha q ser
> >     implementado.
> >     >
> >     >  Tabela: Livro
> >     >
> >     >
> >     > id
> >     > titulo
> >     > assunto Criando o Model para a tabela Livro
> >     >
> >     >  class Livro extends Model {
> >     >       public $id, $titulo, $assunto;
> >     >       function __construct() {
> >     >            parent::model();
> >     >            $this->id = $this->input->post(id);
> >     >            $this->titulo = $this->input->post(titulo);
> >     >            $this->assunto = $this->input->post(assunto);
> >     >       }
> >     >       public function insert() {
> >     >            $this->db->insert('livro', $this);
> >     >       }
> >     >  }  //fim Model
> >     >
> >     >  Criando o Controller, considerando q eu uso o método index para
> >     fazer a
> >     > inserção
> >     >
> >     >  class ControleLivro extends Controller {
> >     >       function __construct() {
> >     >            parent::construct();
> >     >       }
> >     >       function index() {
> >     >            ...
> >     >            if ($this->validation->run() = FALSE) {
> >     >                  $this->load->view("pagina");
> >     >            } else {
> >     >                   $this->load->model(Usuario);
> >     >                   $this->Usuario->insert();
> >     >            }
> >     >       }
> >     >  }
> >     >
> >     >  bom, ele executa corretamente, o problema é que, quando eu
> >     passo o this
> >     > como parametro para fazer a inserção, ele traz outros atributos
> >     de outras
> >     > classes, causando um erro no comando.
> >     >
> >     >  Eu entendi a teoria q o pessoal tentou passar nessa discussão,
> >     mas na
> >     > prática eu não, consegui sair da origem, a estrutura do CI me
> >     trouxe dúvidas
> >     > em relação a criação de objetos.
> >     >  Bom é isso, fico no aguardo.
> >     >  Valeu mais uma vez aí.
> >     >
> >     >
> >     >  Paulo Balzi ________________________________
> >     >
> >     > _______________________________________________
> >     > Lista mailing list
> >     > [email protected] <mailto:[email protected]>
> >     >
> >     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >     <http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br>
> >     >
> >     >
> >     >  --
> >     > Rafael Vieira de Oliveira
> >     > Faculdade de Direito de SBC - Autarquia Municipal
> >     > Setor de Automação, Telefonia e Informação
> >     > (11)4123-0222 Ramal: 208
> >     >
> >     > _______________________________________________
> >     > Lista mailing list
> >     > [email protected] <mailto:[email protected]>
> >     >
> >     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >     <http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br>
> >     >
> >     >
> >
> >
> >     --
> >     Newton Wagner
> >
> >     skype: newtonwagner
> >     msn/gtalk: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> >
> >     http://www.newtonwagner.net/blog <http://www.newtonwagner.net/blog>
> >     - http://www.owshit.com.br/
> >
> >     _______________________________________________
> >     Lista mailing list
> >     [email protected] <mailto:[email protected]>
> >     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Lista mailing list
> > [email protected]
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>


-- 
Newton Wagner

skype: newtonwagner
msn/gtalk: [EMAIL PROTECTED]

http://www.newtonwagner.net/blog
- http://www.owshit.com.br/

_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a