Integrando Smarty com Zend Framework
Autor: Maurício Vinicius de O. Santos | Publicado: 2009-04-24T03:59:00-07:00

E ai pessoal...Dando continuidade ao aprendizado do Zend Framework, escreverei como integrar o Zend framework com o Smarty Template Engine.Com o smarty nós conseguimos separar nossas views(Front controllers)  em templates. Apesar do Zend adotar o padrão MVC (Movel View Controller), nós temos algumas limitações visuais para organizar nosso código de forma que um webdesigner reconheça ou tenha uma grande noção do que está acontecendo em cada bloco de código de nossos arquivos de layout do sistema e, pelos seguidores do Smarty, não há outro template engine melhor que ele.Um exemplo:Toda vez que formos mostrar valores, fazer loops e decisões em nossas páginas e juntarmos tudo ao código HTML, nós temos um visual poluido de nossos arquivos deixando a manutenção mais exaustiva, sem contar que em alguns editores usados pelos webdesigners como o Dreamweaver, a tentativa de interpretação do código do dreamweaver muitas vezes desestrutura o layout do nosso site em fase de desenvolvimento.Uma diferença de um código sem e com Smarty.Sem Smarty: < ?php echo $nomedavariavel ? >Com Smarty: {$nomedavariavel}Eu li alguns artigos explicando como integrar o Smarty com o Zend...mas não gostei. Vou postar aqui da forma que eu achei menos confusa e mais fácil para manutenção:INSTALANDO, INSTANCIANDO E CONFIGURANDO O SMARTYFaça o download do smarty pelo link: http://www.smarty.net/download.phpCrie um diretório chamado Smarty dentro do diretório Library da sua aplicação ZF.Copie o conteúdo da pasta Lib do arquivo de download(Smarty) para o novo diretório criado.Dentro do diretório application do ZF, crie os seguintes diretórios: templates, templates_c e templates_cache.include "Zend/Loader.php";// Instancia as classes necessárias automaticamente (inclusive a do Smarty)Zend_Loader::registerAutoload();//Cria objeto do smarty e configura suas propriedades$smarty = new Smarty();$smarty->debugging = false;$smarty->force_compile = true;$smarty->caching = true;$smarty->compile_check = true;$smarty->cache_lifetime = -1;$marty->template_dir = './application/templates/';$smarty->compile_dir = './application/templates_c';$smarty->cache_dir = './application/templates_cache';//Registra o objeto criado. É por esse registro que iremos referenciar o objeto smarty em nossos controllersZend_Registry::set('smarty', $smarty);Em seu controller,  crie uma variável privada chamada $smarty:class MeuController extends Zend_Controller_Action{private $smarty;...}Chame o smarty da seguinte forma na function init() do seu controller:public function init(){$this->smarty = Zend_Registry::get('smarty');}E dentro de suas actions, passe os valores necessários para o smarty, Ex.:public function indexAction(){  //Cria uma variável chamada Hello com o valor Hello Word!$this->smarty->assign('Hello', 'Hello Word!');  //Diz ao smarty qual é seu arquivo de template para ser renderizado$this->smarty->display('arquivo_template.tpl');}Não esqueça de criar seu arquivo de template(dados html) dentro do diretório templates que criamos.Caso esteja trabalhando com módulos no Zend, vc também pode fazer isso sem problemas que funciona da mesma forma.PLUG-IN DO SMARTY PARA ECLIPSEComo eu uso o Eclipse, existe um Suporte do Smarty para o eclipse PDT.Vocês podem baixar nesse endereço: http://code.google.com/p/smartypdt/Basta descompactar o arquivo no seu diretório do eclipse.Ele é bom para verificar erros de sintaxe do Smarty e além disso, caso não tenhamos esse plugin, o eclipse fica mostrando aqueles warnings como se fossem erros de HTML.Bom pessoal, é isso!Hasta luego!!;)