Smarty Template Engine
Upcoming SlideShare
Loading in...5
×
 

Smarty Template Engine

on

  • 5,376 views

Palestra sobre a utilização de Smarty Template em projetos PHP

Palestra sobre a utilização de Smarty Template em projetos PHP

Statistics

Views

Total Views
5,376
Views on SlideShare
5,195
Embed Views
181

Actions

Likes
1
Downloads
89
Comments
0

8 Embeds 181

http://blog.diegotremper.com 148
http://planet.prophp.com.br 15
http://www.slideshare.net 11
http://ww.javabb.org 3
http://www.infoblogs.com.br 1
http://www.plugmasters.com.br 1
http://php.silvano.pro.br 1
http://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Smarty Template Engine Smarty Template Engine Presentation Transcript

  •  Diego Tremper  Zend Certified Engineer  Entusiasta PHP  Palestrante  Estudante
  •  Cenário  Solução  Benefícios  Smarty Template  Sintaxe  Instalação  Configuração  Variáveis  Modificadores de Variáveis  Funções  Demonstração prática  Conclusão
  •  Padrão Espaguete
  •  Padrão Espaguete
  •  Padrão Espaguete “Qualifica-se de código espaguete um programa de computador que não segue as regras da programação estruturada e abusa de desvios, condicionais ou não, o que torna a leitura do mesmo por seres humanos bem difícil.” Wikipédia: http://pt.wikipedia.org/wiki/Código_espaguete
  • Lógica Apresentação • Lógicas de negócio • Html • Acesso a dados • Design
  •  Torna o código mais legível  Útil para equipes que possuem designers e programadores  Reduz o esforço utilizado para fazer alterações no código (tanto na apresentação quanto na lógica)  Torna mais fácil o reaproveitamento de código
  •  Biblioteca escrita em PHP que possibilita fazer a separação entre a lógica de negócio e a camada de apresentação
  •  Como funciona?  O Smarty separa a apresentação em templates  Templates podem ser organizados de maneira hierárquica ▪ um template pode incluir outro  O Smarty “mistura” as variáveis da aplicação no template , gerando o código para a visualização
  •  Exemplo  Index.tpl Variáveis <html> <head> <title>{$titulo}</title> </head> <body> <h1>Seja bem vindo {$nome}!</h1> </body> </html>
  •  Exemplo  Index.php <?php // . . . $smarty->assign(‘nome’, ‘Diego’); $smarty->assign(‘titulo’, ‘Página de boas vindas’); $smarty->display(‘index.tpl’); // . . .
  • Variáveis <?php /* Smarty version 2.6.20, created on 2008- 10-14 21:45:22 compiled from lista.tpl */ ?> <html> <head> <title><?php echo $this->_tpl_vars['titulo']; ?> </title> Smarty </head> <body> <h1>Seja bem vindo <?php echo $this- >_tpl_vars['nome']; ?>!</h1> </body> </html> Index.tpl Compilação
  • <?php /* Smarty version 2.6.20, created on 2008-10-14 21:45:22 compiled from lista.tpl */ ?> <html> <html> <head> <head> <title>Página de boas <title><?php echo $this- vindas</title> >_tpl_vars['titulo']; ?> </head> </title> <body> </head> <h1>Seja bem vindo Diego!</h1> <body> </body> <h1>Seja bem vindo <?php echo $this- </html> >_tpl_vars['nome']; ?>!</h1> </body> Após execução do PHP </html> Código gerado pelo Smarty
  •  Sintaxe  Todas as tags de template do Smarty contém delimitadores. Por padrão, estes delimitadores são { e }, mas eles podem ser alterados. Tags Smarty Tags HTML <html> <head> <title>{$titulo}</title> </head> <body> <h1>Seja bem vindo {$nome}!</h1> </body> </html>
  •  Comentários  Os comentários do template ficam entre asteriscos dentro de delimitadores {* mostra título da página *} <title>{$titulo}</title> <boby> {* exibe combobox *} <select> <option>Selecione ..</option> </select> </body> </html>
  •  Configuração  Após descompactar os arquivos do Smart ▪ Incluir o arquivo principal da biblioteca ▪ Criar uma instância da classe Smarty require 'Smarty.class.php'; $smarty = new Smarty;
  •  Configuração  É necessário dizer onde estarão os diretórios que o Smarty utilizará // . . . $smarty->template_dir = '/diretorio/templates/'; $smarty ->compile_dir = '/diretorio/templates_c/'; $smarty ->config_dir = '/diretorio/'; $smarty ->cache_dir = '/diretorio/cache/'; // . . .
  •  Variáveis  Para utilizar as variáveis dentro do template é necessário fazer a atribuição das mesmas  A atribuição de variáveis pode ser feita através do método Smart::assign() $smarty->assign(‚nome_variavelquot;, $valor);
  •  Variáveis (cont..) require 'Smarty.class.php'; $smarty = new Smarty; $valor = 10; $smarty->assign(‚nome_variavelquot;, $valor); $smarty->display('index.tpl'); index.tpl O valor da variável é: {$nome_variavel}
  •  Variáveis (cont..) {* exibe uma variável *} {$variavel} {* exibe o terceiro elemento de uma matriz *} {$matriz[3]} {* exibe o elemento ‚nome‛ de uma matriz *} {$matriz.nome}
  •  Funções  Funções são processadas e exibidas colocando-se a função e seus atributos entre delimitadores. {* Exemplo *} {nome_funcao atributo1=‚valor 1‛ atributo2=$variavel} {* include template *} {include file=‚cabecalho.tpl‛} {* alterna as cores: branca e cinza *} {cycle values=‚#fff,#e5e5e5‛}
  •  Funções internas  Funções internas são parte integral da linguagem de template. Você não pode criar funções personalizadas com o mesmo nome de uma função interna, e também não pode modificar funções internas.  foreach,foreachelse,include,literal,if,elseif,else…
  •  Funções internas - foreach {* este exemplo irá mostrar todos os valores da matriz $custid *} {foreach from=$nomes_empregados item=nome} Nome: {$nome}<br> {/foreach} Semelhante: foreach ($nomes_empregados as $nome) { echo ‚Nome: ‛ . $nome . ‚<br>‛; }
  •  Funções internas - if {if $nome == quot;Diegoquot;} Bem vindo {$nome}! {elseif $nome == quot;Andrequot;} Bom dia professor {$nome}! {else} Bom dia senhor {$nome} {/if} {if $nome == quot; Diegoquot; || $nome == quot; Andre quot;} . . . {/if}
  •  Funções internas - include {* inclue o template cabecalho.tpl *} {include file=quot;cabecalho.tplquot;} {* usando o caminho absoluto *} {include file=quot;file:C:/local/meus/templates/cabecalho.tplquot;}
  •  Funções personalizadas  O Smarty possui várias funções personalizadas que você pode usar em seus templates.  Estas funções normalmente estão disponíveis dentro do diretório plugins do Smarty  assign, counter,cycle,
  •  Funções personalizadas – html_options <select name=‚cidades‛> {html_options options=$cidades selected=$cidade_selecionada} </select> OUTPUT: <select name=‚cidades‛> <option value=quot;1000quot;>Alegrete</option> <option value=quot;1001quot;>Canoas</option> <option value=quot;1002quot;>Erechim</option> <option value=quot;1003quot; selected=quot;selectedquot;>Porto Alegre</option> </select>
  •  Funções personalizadas – mailto {mailto address=quot;eu@exemplo.comquot;} OUTPUT: <a href=quot;mailto:eu@exemplo.comquot;>eu@exemplo.com</a> {mailto address=quot;eu@exemplo.comquot; text=‚contatoquot;} OUTPUT: <a href=quot;mailto:eu@exemplo.comquot;>contato</a>
  •  Modificadores de variáveis  Permitem a modificação de variáveis, funções ou strings {* Faz o título ficar com letras maiúsculas *} <h2>{$titulo|upper}</h2> <h3>{‚SUBTITULO DA PAGINA‛|lower}</h3> {* Faz com que $topico use somente 40 caracteres, e coloca ... no fim da frase *} Tópico: {$topico|truncate:40:quot;...quot;}
  •  Modificadores de variáveis (cont…)  É possível também aninhar modificadores {‚Diego‛|cat:‛ Tremper‛|upper} OUTPUT: DIEGO TREMPER
  •  Modificadores de variáveis (cont…)  Outros modificadores… {* Substitui Brasilia por Porto Alegre *} {‚Em Brasilia 19 horas‛|replace:‛Brasilia‛:‛Porto Alegre‚} {* Ex.: Em Porto Alegre 19 horas *} {* Adiciona espaços entre cada caractere *} {‚Em Brasilia 19 horas‛|spacify} {* Ex.: E m B r a s i l i a 1 9 h o r a s*}
  • Demonstração Prática
  •  Existem alternativas para manter a organização em seu código  Separar a lógica de apresentação da lógica de negócio é uma das mais básicas  Não é fácil! Mas com o tempo acaba virando um costume
  • Perguntas?
  • Obrigado!!! Contato: diegotremper@gmail.com LinkedIn: http://www.linkedin.com/in/diegotremper Blog: http://www.diegotremper.com
  •  Smarty: http://www.smarty.net/  PHP: http://www.php.net