Views no CodeIgniter
10 de maio de 2010, em Passos Iniciais, por Tárcio Zemel

Relembrando nossa saga de explicações básicas, vimos como é o funcionamento do padrão MVC, os controllers (e como funciona o esquema de URLs no Codeigniter em função dos controllers) e models. Chegou, então, o momento de estudarmos um pouco sobre views no CodeIgniter!
Views no CodeIgniter
Como foi mostrado no referido artigo sobre Model – View – Controller,
View é a apresentação, é o que aparece, é o que é visualizado por quem usa o sistema. É no View que as informações, sejam elas quais forem e de de qual lugar tenha vindo, são exibida.
No artigo sobre controllers, foi dado o exemplo de uma função matemática que, conforme o URL passado, soma 2 números e exibe o resultado em tela através da função echo(). Mas o exemplo foi somente para ilustrar como é o funcionamento geral dos controllers. Na prática, tudo o que se vai mostrar a quem utiliza o site/software deve ser feito através de views!
Afinal de contas, o padrão MVC foi criado para, justamente, manter em “compartimentos separados” a lógica do aplicativo, o contato com os dados usados e a exibição de o que quer que seja a quem o utiliza. Portanto, views foram idealizados para exibirem todas as informações/processamento que ocorra entre models-controllers. Reforçando: tudo deve ser exibido através de views!
Para ficar claro, podemos dizer que as principais funções de um view, através de invocações de métodos e ventos, são:
- “Renderizar” (exibir) informações vindas dos models/controllers;
- Requisitar atualizações aos models/controllers;
- Enviar ações de usuários (através de inputs) a models/controllers;
Cada vez mais é possível observar a eficiência e praticidade do padrão MVC e perceber que cada um preciso e trabalha em conjunto ao outro. Models, Views e Controllers, cada um tem uma razão de existir e desempenha um papel diferentes, todos em conjunto para viabilizar um desenvolvimento eficiente e organizado.
Funcionamento de Views no CodeIgniter
Seguindo a “linha” dos outros artigos, este tópico deveria ser “Estrutura de um View no CodeIgniter”, mas os views são formados simplesmente por XHTML e CSS. Views são a parte que é vista pelos visitantes/usuários, e, na web, isso é desenvolvido e apresentado usando as respectivas linguagem de marcação e folhas de estilo. Então, views podem ser uma página completa ou um fragmento de uma página, como um cabeçalho, um rodapé, uma barra lateral e assim por diante.
Vamos, então, passar a alguns pontos referentes ao funcionamento de views no CodeIgniter.
Armazenamento de Views
Os views devem ser armazenados em application/views. Simplesmente dê um nome a seu view e armazene neste diretório – muitos views são diretamente ligados a um controller; sendo este o caso, ou não, é importante dar nomes aos views que remetam facilmente a qual função ou conjunto de funções ele está refere. Por exemplo: application/views/about.php
Também é possível estruturar e refinar mais a organização de views. O CodeIgniter permite que se criem subníveis de diretórios dentro do diretório padrão de views. Então, por exemplo, é possível armazenar arquivos de views em uma estrutura do tipo: application/views/includes/head.php ou application/views/blog/widgets/advertising.php.
Carregando um(a) view
Para carregar um(a) view em um controller:
1 | $this->load->view('about'); // sem extensão, se for ".php" |
Para o caso de organização em subdiretórios, basta especificar onde o view se encontra:
1 | $this->load->view('includes/head.php'); |
Carregando múltiplos views
Para carregar múltiplos views, basta chamar um por linha e o CI faz a “montagem” em uma só exibição:
1 2 3 | $this->load->view('includes/head.php'); $this->load->view('body.php'); $this->load->view('includes/footer.php'); |
Passando informações para views
É possível entender o poder do CodeIgniter e sua facilidade de uso ao se passar uma informação dinâmica para ser exibida em um view! Basta carregarmos essa informação em um array ou objeto e passar essa informação no momento de carregamento do view no controller. Por exemplo:
1 2 3 4 5 6 | $data = array( 'title' => 'Sobre', 'content' => 'Texto da página sobre', ); $this->load->view('about', $data); |
Nisso, as informações do array $data serão passadas ao view. Para exibir essas informações na view, simplesmente é preciso tratar como se cada um dos itens do array fosse uma variável à parte, da seguinte maneira:
1 2 | <h1><?php echo $title ?></h1> <p><?php echo $content ?></p> |
Fazendo loopings nos views
Para fazer loopings em views, também é simples. Por exemplo, vamos supor que tenhamos carregado a seguinte informação em um controller:
1 2 3 4 5 | $data['todo_list'] = array('Lavar os pratos', 'Limpar a casa', 'Ligar para a pizzaria'); $data['title'] = "Lista de afazeres"; $this->load->view('afazeres', $data); |
Então, no respectivo view, teríamos:
1 2 3 4 5 6 7 | <h1><?php echo $title ?></h1> <ul> <?php foreach($todo_list as $item): ?> <li><?php echo $item ?></li> <?php endforeach ?> </ul> |
Existe, ainda, uma maneira de passar o “data” para os views como string puro. Mas, como isso não é tão comum de ser feito, fica para um próximo artigo, mais específico.
Conclusão sobre Views no CodeIgniter
Obviamente isso não é tudo o que se tem para saber sobre views no CodeIgniter. Mas esse “básico” sobre views, juntamente com o conteúdo sobre models e controllers, já passa uma noção bem legal sobre o poder do CodeIgniter.
Para quem não conseguiu juntar as peças sobre MVC no CodeIgniter, não se preocupe: no próximo artigo vamos colocar models, views e controllers para trabalhar juntos e você vai ver um dos motivos de porque o CodeIgniter é o melhor framework PHP! ;-)
6 comentários em "Views no CodeIgniter"
Abdullah Al Mamun em 25 de maio de 2010
Really very helpful article!
I have to read this blog via Google translator.
Will love to get regular articles.
Thanks a lot.
:-)
Tárcio Zemel Reply:
maio 25th, 2010 at 11:15
@ Abdullah Al Mamun
Thank you, Abdullah! This blog is writing in brazilian portuguese, but I’m happy you translate that & that was usefull to you!
Robson Martins em 13 de julho de 2010
cara eu so tenho uma duvida como eu passo um objeto para a view ?
se eu faço deste jeito da erro
$data = new minhaClass();
$this->load->view(‘minhaView’, $data);
sabe como eu posso resolver isso ?
abraço
Tárcio Zemel Reply:
julho 20th, 2010 at 14:46
Como consta no artigo, ao passar objetos para o view, as variáveis de classe são transformadas em elementos de array.
Depois comenta se funcionou! :-)

Matheus em 19 de maio de 2010
Bacana o post!!!!
[Responder]
Tárcio Zemel Reply:
maio 20th, 2010 at 13:20
@ Matheus
Que bom que gostou, Matheus! Fique ligado no CodeIgniter Brasil para acompanhar a evolução dos artigos!
[Responder]