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

