CodeIgniter Template Parser Class
22 de agosto de 2011, em Passos Iniciais, por Tárcio Zemel

Vimos no artigo “Models, Views e Controllers trabalhando juntos no CodeIgniter” como é feita a “passagem” de dados numa aplicação em CodeIgniter e como se faz para exibir informações nas views.
Bem, esse é o método “tradicional” de se trabalhar nas views, mas não o único! Já existe no CodeIgniter, nativamente, uma maneira de deixar os views mais enxutos e facilmente inteligíveis; uma maneira de exibir dados mais fácil e rapidamente; e essa maneira é usar a Template Parser Class do CodeIgniter!
O que é a Template Parser Class
A Template Parser Class é uma classe nativa do CodeIgniter que permite usar o sistema de “parser” em pseudo-variáveis nas views. Se você ainda não trabalhou com template engines, então veja a nítida diferença entre exibir dados assim:
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 ?> |
E assim:
1 2 3 4 5 6 | <h1>{$title}</h1> {posts} <h1><a href="/blog/{slug}">{title}</a></h1> {content} {/posts} |
E aí, qual você prefere? ;-)
Como usar a Template Parser Class do CodeIgniter
Se você gostou dessa maneira “diferente” de apresentar seus dados nas views, saiba que é muito simples começar a usar a Template Parser Class!
Primeira, você deve carregar a biblioteca (ou configurar para auto carregar, como conta no artigo) de parser:
$this->load->library('parser'); |
No controller
Tomemos um controller fictício para exemplificar o uso do parser. Primeiro carregamos a library (caso não esteja auto carregada), pegar os dados do model, normalmente, mas, ao invés de darmos um load em alguma view usando $this->load->view(), chamamos o “método-base” da Template Parser Class:
1 2 3 4 5 6 7 8 9 10 11 12 | // Carrega Template Parser Class $this->load->library('parser'); // Carrega um model de Blog qualquer $this->load->model('Blog_model'); // Pega algumas informações do BD $data['title'] = 'Blog de Testes do CodeIgniter'; $data['posts'] = $this->Blog_model->get_posts(5); // Chama a view "parseada" $this->parser->parse('blog_index', $data); |
Perceba o seguinte neste método:
- Primeiro parâmetro. É o nome da view que se deseja “parsear” (“blog_index”).
- Segundo parâmetro. Dados enviados para o “parseamento” ($data).
Dessa maneira, como foi visto no início do artigo, é possível usar a seguinte sintaxe para exibição de dados nas views:
1 2 3 4 5 6 | <h1>{$title}</h1> {posts} <h1><a href="/blog/{slug}">{title}</a></h1> {content} {/posts} |
Veja que, para as variáveis simples, não é preciso echo(), print() ou qualquer função de exibição que seja. Basta envolver o nome da pseudo-variável entre colchetes que funciona! Para sets de resultados vindos do BD ou algum array multidimensional de dados, nos quais, para cada iterador, há valores diferentes a serem exibidos, basta “abrir” e “fechar” o par de pseudo-variáveis, tal como consta no exemplo.
Há um terceiro parâmetro, booleano, opcional, que pode ser usado para, ao invés de já enviar as pseudo-variáveis para serem exibidas, retorna o valor do “parseamento” para ser usado de alguma outra forma na view:
1 | $this->parser->parse('blog_index', $data, TRUE); |
E existe, também, um método para parsear strings ao invés de views. Caso queira saber mais a respeito, veja o método $this->parser->parse_string() na documentação oficial.
Conclusão sobre o template engine do CodeIgniter
Como foi visto, usar o template engine do CodeIgniter para fazer o parser de pseudo-variáveis nas views é bastante simples e intuitivo. Além de reduzir o tamanho do código e poupar tempo de escrita, o código fica tão fácil de entender que até os designers conseguirão realizar pequenas manutenções em views! ;-)
É uma template engine básica, sem maiores recursos de outras mais poderosas que podemos encontrar por aí, mas, até para CI existem recursos de terceiros que aprimoram isso. Provavelmente estes serão mostrados em artigos futuros, não percam!
É verdade que há um consumo de recursos ligeiramente mais elevado do que se não estivéssemos usando um echo(), mas isso não é considerável para projetos pequenos e médios, então a Template Parser Class pode ser usada sem preocupações!
10 comentários em "CodeIgniter Template Parser Class"
Daniel Polito em 23 de agosto de 2011
Muito bom post, e parabéns pelo blog. Acho o parser do CI meio fraco, para lidar com arrays e etc… Uso e recomendo o Dwoo.
Abracos
Tárcio Zemel em 23 de agosto de 2011
O Smarty, sem sombra de dúvidas, é bem mais poderoso! Se o projeto estiver pedindo mais recursos de parser, continue com ele.
Tárcio Zemel em 23 de agosto de 2011
Sim, o Dwoo possui bem mais recursos que o parser default. Futuramente, pretendo fazer um tuto sobre como instalar e usar ele no CI. ;-)
Jonas em 15 de setembro de 2011
Como envio objetos para a view?
Tárcio Zemel em 16 de setembro de 2011
Dê uma olhada em “Passando informações para views” do artigo sobre views no CodeIgniter.
Abraços!
RodolfoNogueira em 26 de dezembro de 2011
Excelente artigo companheiro! Ajudou muito a todos nós! Abraços
Rodolfo Jorge Nemer Nogueira
UFPR – Música Curitiba Paraná
Denes em 21 de janeiro de 2012
Parabéns pelo post! Simples, direto e eficiente.
Tárcio Zemel em 25 de janeiro de 2012
Obrigado! Abraços!
Marcelo Fabiano em 22 de fevereiro de 2012
Adorei o post sobre Parser mto bom ! Queria saber como utilizar Matriz utilizando Parser pois tenho projeto q necessito a utilização de uma matriz q tenho passar para uma view



Netofire em 22 de agosto de 2011
Parabéns novamente pelo blog. Gostaria de sua opinião sobre usar este método ou o Smarty, visto que são parecidos. No framework que estou desenvolvendo inseri o smarty no CI, com ótimos resultados. O que acha?