Models, Views e Controllers trabalhando juntos no CodeIgniter

24 de maio de 2010, em Passos Iniciais, por Tárcio Zemel

Models, Views e Controllers trabalhando juntos no CodeIgniter

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"

gravatar

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:

@ Abdullah Al Mamun
Nice you liked! Stay tuned in CodeIgniter Brasil for more hot topics! ;-)

[Responder]

gravatar

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

[Responder]

Tárcio Zemel Reply:

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!

[Responder]

gravatar

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+

[Responder]

Tárcio Zemel Reply:

Que bom que os artigos estão ajudando, Ricardo! Espero que continue os estudos e apareça no CIB para comentar mais! ;-)

[Responder]

gravatar

José Neto  em 8 de junho de 2010

Parabéns!!! Li todos os posts só hoje :D
Aguardo os próximos!!!!

[Responder]

Tárcio Zemel Reply:

Bom que gostou, José! Aguardo você nos próximos artigos! ;-)

[Responder]

gravatar

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?

[Responder]

Tárcio Zemel Reply:

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!

[Responder]

Comente!