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): ?> <h2><a href="/blog/<?php echo $p->slug ?>"><?php echo $p->title ?></a></h2> <?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!
10 comentários em "Models, Views e Controllers trabalhando juntos no CodeIgniter"
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 Reply:
maio 27th, 2010 at 13:49
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 Reply:
maio 31st, 2010 at 12:43
Que bom que os artigos estão ajudando, Ricardo! Espero que continue os estudos e apareça no CIB para comentar mais! ;-)
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 Reply:
agosto 29th, 2010 at 12:58
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!

Abdullah Al Mamun em 25 de maio de 2010
The most useful tutorial in this series.
Keep up this great work.
[Responder]
Tárcio Zemel Reply:
maio 25th, 2010 at 11:19
@ Abdullah Al Mamun
Nice you liked! Stay tuned in CodeIgniter Brasil for more hot topics! ;-)
[Responder]