Você está na página 1de 5

25/03/12

Usando Smarty 3 com Zend Framework 1.11 | Fl vio Gomes da Silva Lisboa

Fl vio Gomes da Silva Lisboa


Consultoria e treinamento em PHP, Python, Java e Zend Framework

Usando Smarty 3 com Zend Framework 1.11


Publicado em 08/10/2011 por admin

No ltimo treinamento de Zend Framework que ministrei, um dos alunos perguntou como seria possvel usa Smarty junto com o Zend Framework. O melhor jeito de responder, na minha opinio, era mostrar como se fazia. Ento fizemos um exerccio, no ltimo dia de aula, mostrando UMA das formas possveis de se usar Smarty como a camada de viso em uma aplicao Zend Framework, no lugar de Zend_View. Criamos um projeto PHP chamado exerccio. Um projeto PHP nada mais do que uma pasta ou diretrio, contendo arquivos, dentre os quais esto os de extenso .php. Transformamos esse projeto em um projeto Zend Framework seguindo os seguintes passos: 1) Criando o projeto fazer isso executando o comando no diretrio do projeto: php[.exe se for Windows] [diret rio do Zend]/bin/zf.php create project [nome do projeto] Isso cria a estrutura do projeto. 2) Habilitando a reescrita de URL

Executamos o Zend Tool para criar a estrutura MVC do projeto. Se voc baixar o Zend Framework 1.11, pode

A camada de controle do Zend precisa do mdulo rewrite do Apache. Verifique se esse mdulo est carregad para o arquivo index.php que est no diretrio public. 2.1) Virtual host modelo:

no arquivo httpd.conf. Se estiver, voc precisa decidir por uma das duas formas de direcionar o processamen

A primeira usar um virtual host, criando uma configurao de diretrios no arquivo httpd.conf similar a es

SreNm eeccolcl evrae xrii.oa DcmnRo /aht/xrii/ulc ouetot pt/oeeccopbi

Stn APIAINEV"eeomn" eEv PLCTO_N dvlpet

fgsl.eti.br/blog/?p=374

1/5

25/03/12

Usando Smarty 3 com Zend Framework 1.11 | Fl vio Gomes da Silva Lisboa

Drcoyne idxpp ietrIdx ne.h AlwvrieAl loOerd l Odralwdn re lo,ey Alwfo al lo rm l

2.2) .htaccess na raiz do projeto A segunda copiar o arquivo .htaccess que est no diretrio public para o diretrio raiz do projeto, mas afetado pela diretiva AllowOverride All, para que o arquivo .htaccess possa ser lido. Neste caso, necessrio adicionar uma linha no arquivo application.ini, configurando o atributo baseUrl da instncia nica de Zend_Controller_Front. No exemplo da aplicao exercicio , essa linha a seguinte:
rsucsfototolrbsUl=/xrii eore.rnCnrle.aer eecco

acrescentando public/ esquerda do arquivo index.php . Mas para isso, o diretrio do projeto tem de ser

3) Adicionando o framework A pasta library do projeto deve conter a pasta Zend do framework, ou ter um link simblico para ela. 4) Criando uma biblioteca para estender o Zend Para encapsular o Smarty como camada de viso da aplicao, iremos criar uma biblioteca no padro Zend Framework e personalizar o controlador, que passar a usar um objeto de viso diferente. Jobs, dentro da pasta library. Dentro dessa biblioteca, criamos uma classe customizada de viso, que encapsula o Smarty 3. A estrutura a seguinte: library ->Jobs >View >View.php O arquivo View.php contm o seguinte cdigo:

Como na edio deste post o assunto mais falado era a morte de Steve Jobs, criamos uma biblioteca chamad

dfn(SAT_I'rapt(_I_).'Ve/is'; eie'MRYDR,elah_DR_ /iwlb/)

rqieoc 'iwlb/mrycaspp; eur_ne Ve/isSat.ls.h'

fgsl.eti.br/blog/?p=374

2/5

25/03/12

Usando Smarty 3 com Zend Framework 1.11 | Fl vio Gomes da Silva Lisboa

casJb_iwetnsZn_iwAsrc ls osVe xed edVe_btat { piae$sat =nl; rvt _mry ul

pbi fnto _cntut$ofg=ary) ulc ucin _osrc(cni ra() { prn:_cntut$ofg; aet:_osrc(cni) $hs _mry=nwSat(; ti- sat e mry) $hs _mry stoplDrSAT_I .'opl'; ti- sat- eCmiei(MRYDR cmie) $hs _mry stofgi(MRYDR.'ofg) ti- sat- eCniDrSAT_I cni'; $hs _mry stahDrSAT_I .'ah'; ti- sat- eCcei(MRYDR cce) }

pbi fnto asg(se,vle=nl) ulc ucin sin$pc$au ul { $hs _mry asg(se,vle; ti- sat- sin$pc$au) }

pbi fnto stotolr$otolr ulc ucin eCnrle(cnrle) { $hs _mry stepaei(PLCTO_AH.DRCOYSPRTR.'iw'.DRCOYSPRTR.'cit'. ti- sat- eTmltDrAPIAINPT IETR_EAAO ves IETR_EAAO srps DRCOYSPRTR.$otolr.DRCOYSPRTR; IETR_EAAO cnrle IETR_EAAO) }

pbi fnto rne(nm) ulc ucin edr$ae { $ae. 'tl; nm = .p'

rtr $hs _mry fth$ae; eun ti- sat- ec(nm) }

poetdfnto _u( { rtce ucin rn) } }

A pasta View contm a biblioteca do Smarty. Baixamos a verso 3.1.3 do Smarty de http://www.smarty.net/download e copiamos a pasta libs para dentro da pasta View. Este componente foi criado para substituir o Zend_View. Mas dentro da aplicao, isso s tem efeito se o controlador substituir o atributo $this->view por um objeto da classe Jobs_View. Ento o segundo passo foi criar um controlador personalizado.
fgsl.eti.br/blog/?p=374 3/5

25/03/12

Usando Smarty 3 com Zend Framework 1.11 | Fl vio Gomes da Silva Lisboa

A estrutura da biblioteca Jobs ficou assim ento: library ->Jobs >Controller >Action.php >View View.php O arquivo Action.php contm a seguinte classe:

casJb_otolrAto etnsZn_otolrAto ls osCnrle_cin xed edCnrle_cin { pbi fnto ii( ulc ucin nt) { / Iiilz ato cnrle hr * * ntaie cin otolr ee / $hs ve =nwJb_iw) ti- iw e osVe(; }

pbi fnto psDsac( ulc ucin otipth) { $hs ve-stotolr$hs gteus(-gtotolrae); ti- iw eCnrle(ti- eRqet) eCnrleNm() eh $hs ve-rne(ti-gteus(-gtcinae); co ti- iw edr$hs eRqet) eAtoNm() ei; xt } }

5) Usando a biblioteca Jobs Para usar essa biblioteca, temos que registrar o namespace Jobs . Ento criamos uma funo na classe Bootstrap para isso:

pbi fnto _ntp( ulc ucin iiAp) { Zn_odrAtlae:gtntne) rgseNmsae'os) edLae_uoodr:eIsac(- eitraepc(Jb'; }

Implementamos o seguinte IndexController, em application/controllers:


fgsl.eti.br/blog/?p=374 4/5

25/03/12

Usando Smarty 3 com Zend Framework 1.11 | Fl vio Gomes da Silva Lisboa

casIdxotolretnsJb_otolrAto ls neCnrle xed osCnrle_cin {

pbi fnto idxcin) ulc ucin neAto( { $hs ve-asg(mnae''l Mno) ti- iw sin'esgm,A ud'; } }

Na pasta application/views/scripts/index criamos o arquivo index.tpl, com o seguinte contedo:

<DCYEhm PBI "/WC/T HM 40 Src/E""tp/www.r/Rhm4src.t" !OTP tl ULC -/3/DD TL .1 tit/N ht:/w.3ogT/tl/titdd> <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castUF8> mt tpeuv"otn-ye otn=tx/tl hre=T-" <il>netttehr<tte tteIsr il ee/il> <ha> /ed <oy bd> {mnae $esgm <bd> /oy <hm> /tl

Se voc chamar o URL http://localhost/exercicio, dever ver a frase Al Mundo .

Bem, esse foi apenas um exerccio. A biblioteca Jobs tem de ser melhorada para considerar o uso de mdulos layout. Mas isso outra histria.
Esta entrada foi publicada em PHP e marcada com a tag MVC, PHP, Smart , end framework. Adicione o link permanenteaos seus favoritos.

Fl vio Gomes da Silva Lisboa


Orgulhosamente criado com WordPress.

fgsl.eti.br/blog/?p=374

5/5

Você também pode gostar