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): ?>
    <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"

gravatar

Abdullah Al Mamun  em 25 de maio de 2010

The most useful tutorial in this series.
Keep up this great work.

gravatar

Tárcio Zemel  em 25 de maio de 2010

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

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

gravatar

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!

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+

gravatar

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! ;-)

gravatar

José Neto  em 8 de junho de 2010

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

gravatar

Tárcio Zemel  em 11 de junho de 2010

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

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?

gravatar

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!

gravatar

Tárcio Zemel  em 1 de fevereiro de 2011

Obrigado! ;-D

gravatar

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.

gravatar

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!

gravatar

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!

gravatar

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

gravatar

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.

gravatar

Tárcio Zemel  em 4 de abril de 2011

Muito obrigado, Fabricio! Abraços e contamos com sua participação em artigos futuros!

gravatar

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.

gravatar

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…

gravatar

Ivini  em 17 de agosto de 2011

Esse site ta me ajudando a beça, são ótimos os posts aqui escritos. parabéns!

gravatar

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!

gravatar

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!

gravatar

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).

Comente!