Não existe um papel claro escrito na pedra. Existem ferramentas e práticas. De uma forma geral , é apenas bom senso. O CI é fabuloso porque nos dá liberdade para fazermos a aplicação da forma que quisermos. E é mau porque nos dá liberdade para fazermos a aplicação da forma que quiseres eheheh.
Com o codeigniter não precisas sequer de usar models e views. Pode simplesmente usar controllers, fazer chamadas directas ao banco de dados e produzir echos para visualização. No entanto estão lá as outras estruturas para nos ajudar a vida. Colocar código nos models é uma boa ideia por muitos motivos. Mas vou dar apenas um para te por a pensar. Se quiseres reutilizar um código (um qualquer, validação, redimensionamento de uma imagem, apuramento de dados, etc) onde é mais simples de colocar para ser utilizado em qualquer lado? Se for no controlador, terá de usar copy/paste para reproduzir. Enquanto se estiver num model é apenas fazer load do model e usar o método. Para mim e cada vez mais para os utilizadores de arquitecturas MVC a regra é deixar os controladores o mais magro possível e deixar os models engordar à vontade. Agora a decisão é sempre tua :) //Zen 2009/2/5 Eric Saboia (Fortes Informatica) <[email protected]> > Cara, eu lembro que já foi discutido sim, mas não especificamente sobre o > MVC, tanto que pra mim (e pelo visto pra maioria aqui) não havia ficado > claro o papel de cada camada. > > ----- Original Message ----- From: "Newton Wagner" <[email protected]> > To: "CodeIgniter Brasil" <[email protected]> > Sent: Thursday, February 05, 2009 5:54 PM > > Subject: Re: [CodeIgniter] MVC de verdade > > > E é por isso que alguns frameworks criam outra camada além do Model, a > de Persistência. Aí fica mais bem separado ainda! :). > > Realmente essa discussão já foi abordada aqui na lista... quem quiser > pode procurar no histórico. > > > 2009/2/5 Cleyverson Costa <[email protected]>: > >> OK Valeu! >> >> 2009/2/5 Eric Saboia (Fortes Informatica) <[email protected]> >> >>> >>> Cleyverson, >>> se você usa Active Record, teoricamente a mudança entre banco de dados é >>> transparente. além disso, nada impede que você isole as querys das regas >>> de >>> negócio... da uma lida sobre DDD. >>> >>> Valeu! >>> >>> ----- Original Message ----- >>> From: Cleyverson Costa >>> To: CodeIgniter Brasil >>> Sent: Thursday, February 05, 2009 3:32 PM >>> Subject: Re: [CodeIgniter] MVC de verdade >>> Mas pensem, se eu colocar a validação dentro do model e quiser trocar o >>> banco de dados...??? >>> >>> Isso vai me dar uma grande dor d cabeça... >>> >>> Regra de negocio eu chamo de validações, ifs e elses etc que vai dizzer o >>> que fazer...pra mim nao ta tendo logica isso ficar dentro do model. >>> >>> Abraços >>> >>> 2009/2/5 Eric Saboia (Fortes Informatica) <[email protected] >>> > >>> >>>> >>>> Se os "criadores" do CI trabalham de forma errada, porque algum de nós >>>> faria diferente? Fiquei com a pulga atrás da orelha agora em relação ao >>>> CI >>>> :( >>>> >>>> ----- Original Message ----- >>>> From: Vinicius Cruz >>>> To: CodeIgniter Brasil >>>> Sent: Thursday, February 05, 2009 3:00 PM >>>> Subject: Re: [CodeIgniter] MVC de verdade >>>> Acho que aprendi tudo errado ... O_o >>>> O sistema aqui do trampo tá igual ao Bamboo. >>>> >>>> 2009/2/5 Luciano Soares <[email protected]> >>>> >>>>> >>>>> Mais informações >>>>> >>>>> http://java.sun.com/blueprints/patterns/MVC-detailed.html >>>>> >>>>> >>>>> Participants & Responsibilities >>>>> >>>>> The MVC architecture has its roots in Smalltalk, where it was >>>>> originally >>>>> applied to map the traditional input, processing, and output tasks to >>>>> the >>>>> graphical user interaction model. However, it is straightforward to map >>>>> these concepts into the domain of multi-tier enterprise applications. >>>>> >>>>> Model - The model represents enterprise data and the business rules >>>>> that >>>>> govern access to and updates of this data. Often the model serves as a >>>>> software approximation to a real-world process, so simple real-world >>>>> modeling techniques apply when defining the model. >>>>> View -The view renders the contents of a model. It accesses enterprise >>>>> data through the model and specifies how that data should be presented. >>>>> It >>>>> is the view's responsibility to maintain consistency in its >>>>> presentation >>>>> when the model changes. This can be achieved by using a push model, >>>>> where >>>>> the view registers itself with the model for change notifications, or a >>>>> pull >>>>> model, where the view is responsible for calling the model when it >>>>> needs to >>>>> retrieve the most current data. >>>>> Controller - The controller translates interactions with the view into >>>>> actions to be performed by the model. In a stand-alone GUI client, user >>>>> interactions could be button clicks or menu selections, whereas in a >>>>> Web >>>>> application, they appear as GET and POST HTTP requests. The actions >>>>> performed by the model include activating business processes or >>>>> changing the >>>>> state of the model. Based on the user interactions and the outcome of >>>>> the >>>>> model actions, the controller responds by selecting an appropriate >>>>> view. >>>>> >>>>> 2009/2/5 Luciano Soares <[email protected]> >>>>> >>>>>> >>>>>> Bom nesse link da wikiedia em ingles explica o tradicional modelo MVC >>>>>> (que é diferente daquele implementado pelo CI devido as restrições de >>>>>> não >>>>>> criãção de observers em PHP) >>>>>> >>>>>> http://en.wikipedia.org/wiki/Model-view-controller >>>>>> >>>>>> As a design pattern >>>>>> >>>>>> MVC encompasses more of the architecture of an application than is >>>>>> typical for a design pattern.[citation needed] >>>>>> >>>>>> Model Is the domain-specific representation of the information on >>>>>> which >>>>>> the application operates. Domain logic adds meaning to raw data (for >>>>>> example, calculating whether today is the user's birthday, or the >>>>>> totals, >>>>>> taxes, and shipping charges for shopping cart items). Many >>>>>> applications use >>>>>> a persistent storage mechanism (such as a database) to store data. MVC >>>>>> does >>>>>> not specifically mention the data access layer because it is >>>>>> understood to >>>>>> be underneath or encapsulated by the model. View Renders the model >>>>>> into a >>>>>> form suitable for interaction, typically a user interface element. >>>>>> Multiple >>>>>> views can exist for a single model for different purposes. Controller >>>>>> Processes and responds to events (typically user actions) and may >>>>>> indirectly >>>>>> invoke changes on the model. >>>>>> >>>>>> 2009/2/5 Luciano Soares <[email protected]> >>>>>> >>>>>>> >>>>>>> Controladores se preocupam apenas com o fluxo das operações dentro de >>>>>>> um modelo MVC. >>>>>>> >>>>>>> O modelo é onde ficam as regras de negócio. >>>>>>> >>>>>>> 2009/2/5 Cairo Noleto <[email protected]> >>>>>>> >>>>>>>> >>>>>>>> No Rails, os métodos de um controller são chamadas de actions, que >>>>>>>> realmente passam a ação do que se vai fazer, em um crud temos as >>>>>>>> seguintes >>>>>>>> ações: >>>>>>>> Create, Read, Update e Destroy. >>>>>>>> >>>>>>>> no rails teríamos os seguintes métodos >>>>>>>> >>>>>>>> def index >>>>>>>> end >>>>>>>> def new >>>>>>>> end >>>>>>>> def edit >>>>>>>> end >>>>>>>> def save >>>>>>>> end >>>>>>>> def destroy >>>>>>>> end >>>>>>>> def show >>>>>>>> end >>>>>>>> >>>>>>>> Isso seria as ações da aplicação. >>>>>>>> >>>>>>>> "Um colaborador pode criar uma nova venda" sales/new >>>>>>>> "Um colaborador pode vizualizar uma venda" sales/1/show >>>>>>>> "Um colaborador pode editar uma venda" sales/2/edit >>>>>>>> "Um colaborador pode excluir uma venda" sales/1/destroy >>>>>>>> >>>>>>>> Claro que isso é a grosso modo, hoje existe formas melhores de se >>>>>>>> fazer isso no rails usando o conceito de rest web service. Mas idéia >>>>>>>> é >>>>>>>> justamente essa, fazer com que um determinado controle expresse >>>>>>>> apenas as >>>>>>>> ações >>>>>>>> >>>>>>>> 2009/2/5 Cleyverson Costa <[email protected]> >>>>>>>> >>>>>>>>> >>>>>>>>> Eric, >>>>>>>>> >>>>>>>>> De tudo o que ja li, o uso correto é da seguinte forma: >>>>>>>>> >>>>>>>>> Model >> Aqui tem basicamente as chamadas ao BD. Pense na se >>>>>>>>> seguinte situação. Opa minha empresa vai mudar de banco de dados, >>>>>>>>> entao as >>>>>>>>> consultas SQL deverao ser modificadas. Se vc tiver no model apenas >>>>>>>>> as >>>>>>>>> chamadas ao banco, vc modifica apenas esta camada. Vc modifica os >>>>>>>>> sql e todo >>>>>>>>> o resto continua funcionando. >>>>>>>>> >>>>>>>>> Controller >> Aqui ficam as regras de negocio e validações etc. >>>>>>>>> Tudo >>>>>>>>> fica aqui. Esta é sua camada de negocio. >>>>>>>>> >>>>>>>>> View >> Aqui fica a apresentação. Muita gente acaba colocando o >>>>>>>>> utf8_encode/decode na view, mas acho que nao seria uma boa pratica. >>>>>>>>> Quanto >>>>>>>>> mais limpo vc puder deixar a view (usando o controller) melhor. >>>>>>>>> >>>>>>>>> Depois de muito apanhar esta foi a forma que eu acabei achando como >>>>>>>>> mais correta. Estou usando esta estrutura no site www.ezmatch.netcaso >>>>>>>>> queira dar uma olhada. >>>>>>>>> >>>>>>>>> Abraços >>>>>>>>> >>>>>>>>> 2009/2/5 Eric Saboia (Fortes Informatica) >>>>>>>>> <[email protected]> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Pessoal, pedi antes de ontem um exemplo de aplicação bem feita em >>>>>>>>>> CI, me indicaram o http://www.bambooinvoice.org/ . Eu estava >>>>>>>>>> querendo checar >>>>>>>>>> o uso do MVC dentro de uma aplicação em CodeIgniter, mas me >>>>>>>>>> deparei com o >>>>>>>>>> mesmo "erro" que julgava estar acontecendo aqui na empresa. O >>>>>>>>>> controller tá >>>>>>>>>> cheio de regras de negócio, assim como validações e etc. Isso tudo >>>>>>>>>> não >>>>>>>>>> deveria estar no Model? Pois até onde sei o modelo representa >>>>>>>>>> tanto a >>>>>>>>>> persistência, quanto o negócio, enquanto o Controller é >>>>>>>>>> responsável >>>>>>>>>> unicamente pelo fluxo da aplicação. >>>>>>>>>> >>>>>>>>>> Opniões? >>>>>>>>>> Eric Saboia >>>>>>>>>> Desenvolvimento Web >>>>>>>>>> Fortes Informática (Fortaleza) >>>>>>>>>> Fone: (85) 4005-1111 >>>>>>>>>> [email protected] >>>>>>>>>> www.grupofortes.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 >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Cairo Noleto >>>>>>>> ========= >>>>>>>> Cairo'sBlog - http://www.caironoleto.com/ >>>>>>>> Web developer - Add4 Comunicação - http://www.add4.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 >>>>> >>>>> >>>> ________________________________ >>>> >>>> _______________________________________________ >>>> 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 >>>> >>>> >>> ________________________________ >>> >>> _______________________________________________ >>> 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 >>> >>> >> >> _______________________________________________ >> 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/ > - http://www.owshit.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 >
_______________________________________________ Lista mailing list [email protected] http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

