[CodeIgniter] Chamar model dentro de model
Marcus Cavalcanti
marcus.cavalcanti em gmail.com
Quinta Dezembro 6 12:39:48 BRST 2007
Acrescentando:
http://rubyonbr.org/articles/2007/01/18/a-dieta-dos-controllers/
On Dec 6, 2007 12:39 PM, Marcus Cavalcanti <marcus.cavalcanti em gmail.com>
wrote:
> O ideal é o controller ser o mais magro e enxuto possível .. ser o meio de
> campo ente modelo ->view
>
> Validações são feitas em controller .. nunca em modelo, mas validações não
> são regras de negócio .. além do que vc pode ter uma classe só pra validar
> .. eu faço isso usando hook, como filters no struts e interceptors no
> webwok.
>
> Leituras:
>
> http://www.martinfowler.com/bliki/AnemicDomainModel.html
> http://www.webdoispontozero.com/blog/?p=75
> http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs
>
> Se todos puderem ler, seria interessante, para podermos debater idéias em
> um mesmo contexto.
>
>
> On Dec 6, 2007 12:29 PM, Marcus Cavalcanti <marcus.cavalcanti em gmail.com>
> wrote:
>
> > Toda questão que é conceitual condiciona a N interprertações diferentes
> > .. normal
> >
> > Queria saber o que vcs entendem como regra de negócio .. a propósito,
> > alguém conhece o pattern DAO?
> >
> >
> >
> > On Dec 6, 2007 11:53 AM, Cleyverson Costa <cleyversoncosta em gmail.com>
> > wrote:
> >
> > > O que por exemplo vcs validam na model??
> > >
> > > Nao estou exergando nada de extra que me faça validar algo na model.
> > >
> > > Abraços
> > >
> > > Em 06/12/07, Cleyverson Costa <cleyversoncosta em gmail.com> escreveu:
> > >
> > > > Hmm
> > > >
> > > > Ummm eu faço a validação no controller...acho q fica mais enxuto a
> > > > model.
> > > >
> > > > Em 06/12/07, Newton Wagner < newtonweb em gmail.com> escreveu:
> > > > >
> > > > > Eu discordo de um ponto só.
> > > > >
> > > > > Pra mim, quem valida se o campo é obrigatório ou não, se o e-mail
> > > > > é
> > > > > valido ou não, é o Modelo. Isso é uma regra de negócio.
> > > > >
> > > > > É meio polêmico e conceitual, mas é por aí. :).
> > > > >
> > > > >
> > > > > --
> > > > > 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:
> > > > > > Regra de negócio muito básica pra ajudar a galera: autenticação
> > > > > de usuário!
> > > > > > =) (eu falei que era básica)
> > > > > >
> > > > > > Digamos que o login em um sistema web seja feito com email e
> > > > > senha - a senha
> > > > > > deve ser sempre um hash do conteúdo real .
> > > > > > Etapas:
> > > > > >
> > > > > > View: O usuário preenche login e senha e envia o form
> > > > > > Controller: Recebe os dados do post, trata ou valida esses dados
> > > > > (se é
> > > > > > obrigatório/e-mail válido/etc) e encaminha para o Model
> > > > > verificar a
> > > > > > autenticidade das informações.
> > > > > > Model: Faz o hash da senha preenchida na view; seleciona e-mail
> > > > > e senha (que
> > > > > > já é armazenada como hash); se os hashs são iguais para o e-mail
> > > > > preenchido
> > > > > > na view, o model retorna true; senão, retorna false para o
> > > > > controller.
> > > > > > Controller: Se o model retornou true, encaminha para a área
> > > > > restrita de um
> > > > > > sistema (pode carregar dados na seção ou ainda fazer outras
> > > > > tarefas
> > > > > > internas); se o model retornou false, encaminha para uma view
> > > > > com mensagem
> > > > > > de erro amigável. Como vocês puderam perceber, o controller
> > > > > serve apenas de
> > > > > > meio de campo mesmo, e no model é que são implementados todos os
> > > > > requisitos.
> > > > > > Não quer dizer que o controller não possa ter os if, elses que o
> > > > > colega
> > > > > > falou anteriormente, mas vai ter somente para controles do fluxo
> > > > > de
> > > > > > execução, e não para execução de regra de negócio, que por boas
> > > > > práticas,
> > > > > > devem sim ficar no model.
> > > > > >
> > > > > > Flw pessoal.
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Dec 6, 2007 10:14 AM, Luciano Soares <lussterl em gmail.com>
> > > > > wrote:
> > > > > > > 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, Gilson < gilson.wolfart em gmail.com > escreveu:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > Luciano, explica direito esse negõcio de regras de negócio
> > > > > no modelo,
> > > > > > > > porquê eu comecei com o CodeIgniter há pouquíssimo tempo (na
> > > > > verdade
> > > > > > > > estou no primeiro projeto com ele) e, se for assim, estou
> > > > > fazendo tudo
> > > > > > > > errado.
> > > > > > > >
> > > > > > > > Abraços,
> > > > > > > > Gilson
> > > > > > > >
> > > > > > > > Em 06/12/07, Luciano Soares< lussterl em gmail.com> escreveu:
> > > > > > > > > Osdeni, numa arquitetura MVC as regras e negócio ficam no
> > > > > modelo e
> > > > > > não no
> > > > > > > > > controlador.
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Em 05/12/07, Osdeni José Sadzinski < osdeni em gmail.com>
> > > > > escreveu:
> > > > > > > > > > Como o Marco falou, pode ser um helper também, depende
> > > > > da
> > > > > > complexidade
> > > > > > > > > dessa classe Data.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Dec 5, 2007 2:02 PM, Marco Telles <
> > > > > contato em pierdeipanema.com.br
> > > > > > >
> > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > Uma vez rolou essa questão aqui, e a julgar pelo
> > > > > conteúdo do core
> > > > > > do ci,
> > > > > > > > > > > onde todas as funções ficam no helpers e na libray as
> > > > > classes,
> > > > > > você
> > > > > > > > > > > poderia colocar suas funções no helpers de sua
> > > > > aplicação.
> > > > > > > > > > > Agora isso é uma questão pessoal. Se você preferir
> > > > > pode até
> > > > > > colocar como
> > > > > > > > > > > no método tradicional, como uma pasta include
> > > > > (desnecessária, mas
> > > > > > é uma
> > > > > > > > > > > opção).
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Muita sorte para nós!
> > > > > > > > > > >
> > > > > > > > > > > Marco Telles
> > > > > > > > > > >
> > > > > > > > > > > #############
> > > > > > > > > > > # Pier de Ipanema (
> > > > > > http://www.pierdeipanema.com.br/ )
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Cleyverson Costa escreveu:
> > > > > > > > > > >
> > > > > > > > > > > > Sim Marco,
> > > > > > > > > > > >
> > > > > > > > > > > > Mas se eu nao coloco no model eu coloco onde?? Como
> > > > > uma
> > > > > > library??
> > > > > > > > > > > >
> > > > > > > > > > > > Em 05/12/07, *Marco Telles* <
> > > > > contato em pierdeipanema.com.br
> > > > > > > > > > > > <mailto: contato em pierdeipanema.com.br>> escreveu:
> > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Se é uma função 'genérica', não seria o caso
> > > > > dela estar fora
> > > > > > do
> > > > > > > > > > > > model e
> > > > > > > > > > > > disponível para qualquer model ou controller ?
> > > > > > > > > > > > Assim, você pelo controler, inclui sua função,
> > > > > faz o acesso
> > > > > > ao
> > > > > > > > > model
> > > > > > > > > > > > 'data', recebe como retorno a 'data trabalhada',
> > > > > chama o
> > > > > > model
> > > > > > > > > pessoa
> > > > > > > > > > > > enviando a 'data trabalhada' como parâmetro.
> > > > > Pelo que
> > > > > > entendi
> > > > > > > > > > > > seria isso
> > > > > > > > > > > > uma forma ?
> > > > > > > > > > > >
> > > > > > > > > > > > Abs
> > > > > > > > > > > >
> > > > > > > > > > > > Muita sorte para nós!
> > > > > > > > > > > >
> > > > > > > > > > > > Marco Telles
> > > > > > > > > > > >
> > > > > > > > > > > > #############
> > > > > > > > > > > > # Pier de Ipanema (
> > > > > > > > > http://www.pierdeipanema.com.br/ )
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Cleyverson Costa escreveu:
> > > > > > > > > > > > > Tipo.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Eu criei o model pessoa e o model data por
> > > > > exemplo.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Dentro do model pessoa eu tenho uma funçao que
> > > > > faz uma
> > > > > > chamada
> > > > > > > > > no
> > > > > > > > > > > > > banco a uma data e trabalha trabalha com ela.
> > > > > Eu refazer o
> > > > > > > > > codigo
> > > > > > > > > > > > > dentro de pessoa é besteira, entao eu so quero
> > > > > estar
> > > > > > dentro de
> > > > > > > > > > > > pessoa
> > > > > > > > > > > > > e chamar a funçao que está dentro do model
> > > > > data.
> > > > > > > > > > > > >
> > > > > > > > > > > > > É errado fazer isso?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Abraços
> > > > > > > > > > > > >
> > > > > > > > > > > > > Em 05/12/07, *Osdeni José Sadzinski* <
> > > > > osdeni em gmail.com
> > > > > > > > > > > > <mailto: osdeni em gmail.com>
> > > > > > > > > > > > > <mailto: osdeni em gmail.com <mailto: osdeni em gmail.com
> > > > > >>>
> > > > > > escreveu:
> > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Mas porque você ques chamar um model
> > > > > dentro de outro
> > > > > > model?
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Dec 5, 2007 3:34 AM, Cleyverson Costa
> > > > > > > > > > > > > < cleyversoncosta em gmail.com
> > > > > > > > > > > > <mailto: cleyversoncosta em gmail.com >
> > > > > > > > > > > > <mailto: cleyversoncosta em gmail.com
> > > > > > > > > > >
> > > > > > > > > > > > <mailto: cleyversoncosta em gmail.com >>> wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > Pessoal,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Eu estou dentro de uma função em um
> > > > > model X e
> > > > > > quero
> > > > > > > > > > > > chamar uma
> > > > > > > > > > > > > função do model Y.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Existe alguma restrição do CI qto a
> > > > > isso??
> > > > > > > > > > > > >
> > > > > > > > > > > > > Abraços
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Cleyverson Pereira Costa
> > > > > > > > > > > > > Bacharel em Ciência da Computação
> > > > > FAESA
> > > > > > > > > > > > > Residente em Engenharia de Testes
> > > > > CIn-UFPE
> > > > > > > > > > > > >
> > > > > > > > >
> > > > > > ----------------------------------------------------------
> > > > > > > > > > > > > Tel.: (81) 8785-1289
> > > > > > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > > > > > Lista mailing list
> > > > > > > > > > > > > Lista em codeigniter.com.br
> > > > > > > > > > > > <mailto: Lista em codeigniter.com.br> <mailto:
> > > > > > > > > Lista em codeigniter.com.br
> > > > > > > > > > >
> > > > > > > > > > > > <mailto: Lista em codeigniter.com.br>>
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > > > > > > > > > <
> > > > > > > > >
> > > > > >
> > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Atenciosamente,
> > > > > > > > > > > > >
> > > > > > > > > > > > > Osdeni José Sadzinski
> > > > > > > > > > > > > E-mail: osdeni em gmail.com <mailto:
> > > > > osdeni em gmail.com>
> > > > > > <mailto:
> > > > > > > > > > >
> > > > > > > > > > > > osdeni em gmail.com <mailto: osdeni em gmail.com >>
> > > > > > > > > > > > > MSN: osdeni em hotmail.com <mailto:osdeni em hotmail.com>
> > > > > > > > > > > > <mailto: osdeni em hotmail.com <mailto:
> > > > > osdeni em hotmail.com>>
> > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > > > > > Lista mailing list
> > > > > > > > > > > > > Lista em codeigniter.com.br <mailto:
> > > > > > Lista em codeigniter.com.br >
> > > > > > > > > > > > <mailto: Lista em codeigniter.com.br <mailto:
> > > > > > > > > Lista em codeigniter.com.br>>
> > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Cleyverson Pereira Costa
> > > > > > > > > > > > > Bacharel em Ciência da Computação FAESA
> > > > > > > > > > > > > Residente em Engenharia de Testes CIn-UFPE
> > > > > > > > > > > > >
> > > > > > > > >
> > > > > > ----------------------------------------------------------
> > > > > > > > > > > > > Tel.: (81) 8785-1289
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > > ------------------------------------------------------------------------
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > _______________________________________________
> > > > > > > > > > > > > Lista mailing list
> > > > > > > > > > >
> > > > > > > > > > > > > Lista em codeigniter.com.br <mailto:
> > > > > Lista em codeigniter.com.br
> > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > > <http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > _______________________________________________
> > > > > > > > > > > > Lista mailing list
> > > > > > > > > > > > Lista em codeigniter.com.br <mailto:
> > > > > Lista em codeigniter.com.br>
> > > > > > > > > > > >
> > > > > > > > >
> > > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > Cleyverson Pereira Costa
> > > > > > > > > > > > Bacharel em Ciência da Computação FAESA
> > > > > > > > > > > > Residente em Engenharia de Testes CIn-UFPE
> > > > > > > > > > > >
> > > > > > > > >
> > > > > > ----------------------------------------------------------
> > > > > > > > > > > > Tel.: (81) 8785-1289
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > > ------------------------------------------------------------------------
> > > > > > > > > > > >
> > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > 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
> > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > 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
> > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > 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
> > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Lista mailing list
> > > > > Lista em codeigniter.com.br
> > > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Cleyverson Pereira Costa
> > > > Bacharel em Ciência da Computação FAESA
> > > > Residente em Engenharia de Testes CIn-UFPE
> > > > ----------------------------------------------------------
> > > > Tel.: (81) 8785-1289
> > > >
> > >
> > >
> > >
> > > --
> > >
> > > Cleyverson Pereira Costa
> > > Bacharel em Ciência da Computação FAESA
> > > Residente em Engenharia de Testes CIn-UFPE
> > > ----------------------------------------------------------
> > > Tel.: (81) 8785-1289
> > >
> > > _______________________________________________
> > > Lista mailing list
> > > Lista em codeigniter.com.br
> > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> > >
> >
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://codeigniter.com.br/pipermail/lista_codeigniter.com.br/attachments/20071206/74df1842/attachment-0001.html
Mais detalhes sobre a lista de discussão Lista