Models, Views e Controllers trabalhando juntos no CodeIgniter
24 de maio de 2010, em Passos Iniciais, por Tárcio Zemel

Já vimos no CodeIgniter Brasil artigos sobre Models, Views e Controllers, separadamente. Para projetos “da vida real”, no entanto, todos estes trabalham conjuntamente e é preciso “juntar as peças” para entender como se dá este funcionamento. Neste artigo, apesar de ainda não ser um projeto “oficial”, veremos como fazer Models, Views e Controllers trabalharem juntos no CodeIgniter!
O Model
Vamos supor que existe um banco de dados de um sistema de blog feito em CI. Vamos supor, ainda que uma das funções desse model, “Blog_model”, serve para pegar “N” registros do BD para se exibir onde se queira. Seria algo como:
1 2 3 4 5 | function get_posts($n) { $query = $this->db->query('SELECT title, content, slug FROM posts LIMIT ' . $n); return $query->result(); } |
Obviamente este seria somente um fragmento de códigos. Se estiver com dúvidas, vide o artigo sobre Models no CodeIgniter.
O Controller
Nosso controller, “Blog”, dentre outras coisas, possui uma função para se valer do respectivo model:
1 2 3 4 5 6 7 8 | function index() { $this->load->model('Blog_model'); $data['title'] = 'Blog de Testes do CodeIgniter'; $data['posts'] = $this->Blog_model->get_posts(5); $this->load->view('blog_index', $data); } |
Como vimos no artigo sobre Controllers no CodeIgniter, é possível passar dados a views por um array ou objeto no segundo parâmetro da função de carregar o view.
O View
No view, tratamos os valores do array passado como se fossem variáveis “comuns”. No caso de $posts, já que um conjunto de dados virá do BD, realizar um foreach, conforme explicado no artigo sobre Views no CodeIgniter.
1 2 3 4 5 6 | <h1><?php echo $title ?></h1> <?php foreach($posts as $p): ?> <h1><a href="/blog/<?php echo $p->slug ?>"><?php echo $p->title ?></a></h1> <?php echo $p->content ?> <?php endforeach ?> |
Conclusão
A conclusão é que é muito fácil trabalhar com CodeIgniter (e olha que nem começamos a apresentar as classes e libraries nativos)! Viram como separando o contato com o banco de dados (model), a lógica (controller) e a apresentação (view) é muito mais simples e organizado de se programar?
A separação que o MVC proporciona é incrível e confere uma também incrível facilidade de se manutenir, em separado cada uma das “partes” que constituem o site, software, sistema online ou o que quer que se faça usando CodeIgniter!
É por isso que não cansamos de repetir que o CodeIgniter é o melhor framework PHP!
24 comentários em "Models, Views e Controllers trabalhando juntos no CodeIgniter"
Tárcio Zemel em 25 de maio de 2010
@ Abdullah Al Mamun
Nice you liked! Stay tuned in CodeIgniter Brasil for more hot topics! ;-)
Matheus em 25 de maio de 2010
não me vejo hoje trabalhando sem a arquitetura MVC e o CodeIgniter foi o framework PHP que melhor me adaptei até agora!
Os assuntos dos tutoriais a partir de agora vão ficar mais interessantes pois pelo ótimo nível dos posts, os assuntos mais "profundos" vão ser bem explicados e explorados.
Parabéns
Tárcio Zemel em 27 de maio de 2010
Obrigado, Matheus! Realmente, a partir de agora, a tendência é fazer coisas mais elaboradas, mais condizentes aos projetos da "vida real". Aguardamos sua participação!
Ricardo dos Santos em 28 de maio de 2010
Cara,
Ta tudo muito bom… o projeto que comecei… já to colocando no ar usando o CodeIgniter…
E os seus posts estão ajudando muito, já que sou iniciante no CI…
E agora ainda mais… com interação com banco…
Valeu pela ajuda…
Continue com o bom nível dos posts…
T+
Tárcio Zemel em 31 de maio de 2010
Que bom que os artigos estão ajudando, Ricardo! Espero que continue os estudos e apareça no CIB para comentar mais! ;-)
José Neto em 8 de junho de 2010
Parabéns!!! Li todos os posts só hoje :D
Aguardo os próximos!!!!
Tárcio Zemel em 11 de junho de 2010
Bom que gostou, José! Aguardo você nos próximos artigos! ;-)
Fernando Vargas em 28 de agosto de 2010
Ola pessoal estou iniciando como programador tenho alguns sites desenvolvidos e estou muito interessado em começar a usar o codeiginiter mas nao estou conseguindo sair do chão. Li sobre as configurações e elas estao feitas… mas e agora qual o próximo passo?
Tárcio Zemel em 29 de agosto de 2010
Recomendamos a leitura de nossa categoria Passos Iniciais, na qual é possível encontrar artigos que explicam esses primeiros passos que você está buscando. Abraços!
Tárcio Zemel em 1 de fevereiro de 2011
Obrigado! ;-D
Tárcio Zemel em 1 de fevereiro de 2011
Leia todos os artigos da seção "Passos Iniciais", na ordem, que você vai conseguir pegar a base.
Kadu de Souza em 25 de fevereiro de 2011
Poxa Tarcio, é impressionante como você responde a todos os comentários, parabéns de verdade!
Um amigo me indicou o CI (David do videoaulasbrasil.com.br conhece?), me disse que era um framework bacana para se trabalhar e quando fui procurar encontrei seu blog…
Tive muita sorte…. ;-)
Parabéns pelo trabalho!
Tárcio Zemel em 28 de fevereiro de 2011
Eu tento responder a todos, mesmo, que bom que está sendo do agrado! ;-)
Não conhecia o site, mas dei uma olhada rápida e encontrei alguns vídeos interessantes; depois vou assistir.
Obrigado e abraços!
Fabricio Cruz em 30 de março de 2011
Olha, muito bom o site…. muito bom o conteudo… gostei muito do FW CI…. como o amigo lá em cima disse.. eu realmente nao consegui parar de ler os posts….
Continue assim!!!!
Obrigado
mauricio em 31 de março de 2011
Alguem sabe a solucao para o erro: Object of class stdClass could not be converted to string,
agradeço.
Tárcio Zemel em 4 de abril de 2011
Muito obrigado, Fabricio! Abraços e contamos com sua participação em artigos futuros!
Tárcio Zemel em 4 de abril de 2011
A pergunta foi bastante genérica, mas tente dar uma olhada neste tópico do fórum oficial do CodeIgniter.
mauricio em 5 de abril de 2011
Obrigado, trata-se de um get que fiz no mysql, nao consigo percorrer o array com o foreach, retorna esse erro acima… porem quando uso o print_r() o array aparece perfeitamente…
Ivini em 17 de agosto de 2011
Esse site ta me ajudando a beça, são ótimos os posts aqui escritos. parabéns!
Tárcio Zemel em 22 de agosto de 2011
Que bom que estão ajudando Ivini! Assine o feed para saber quando saírem novos artigos!
PauloLinhares9 em 5 de janeiro de 2012
Me deparei com uma necessidade de passar dois parâmetros separados a uma views. Ex: $this->load->view('exemplo', $params1, $params2);
Existe essa possibilidade ? testei aqui , mas não funfou ! Grato!
Tárcio Zemel em 7 de janeiro de 2012
Passar 2 variáveis, seria isso? Se for, no exemplo do artigo já mostra (é colocando os valores num array).
- Como compactar HTML no CodeIgniter | CodeIgniter Brasil em 25 de janeiro de 2012



Abdullah Al Mamun em 25 de maio de 2010
The most useful tutorial in this series.
Keep up this great work.