SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
   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

Contenu connexe

Tendances

Ágil na Prática - Ruby
Ágil na Prática - RubyÁgil na Prática - Ruby
Ágil na Prática - RubyIgo Coelho
 
Apresentacao codeigniter
Apresentacao codeigniterApresentacao codeigniter
Apresentacao codeigniterAndré Tagliati
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryHarlley Oliveira
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
HTML & CSS - Aula 2
HTML & CSS - Aula 2HTML & CSS - Aula 2
HTML & CSS - Aula 2lucampos_si
 

Tendances (11)

Ágil na Prática - Ruby
Ágil na Prática - RubyÁgil na Prática - Ruby
Ágil na Prática - Ruby
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Aula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQLAula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQL
 
Apresentacao codeigniter
Apresentacao codeigniterApresentacao codeigniter
Apresentacao codeigniter
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
XHtml
XHtmlXHtml
XHtml
 
Facelets
FaceletsFacelets
Facelets
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Curso de Introdução - PHP
Curso de Introdução - PHPCurso de Introdução - PHP
Curso de Introdução - PHP
 
HTML & CSS - Aula 2
HTML & CSS - Aula 2HTML & CSS - Aula 2
HTML & CSS - Aula 2
 

En vedette

Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Aghatha 02 overview consultoria processos de ti versao slide share v1
Aghatha 02 overview consultoria processos de ti versao slide share v1Aghatha 02 overview consultoria processos de ti versao slide share v1
Aghatha 02 overview consultoria processos de ti versao slide share v1Aghatha Maxi Consulting
 
Ficha 13 a tradição do linho
Ficha 13 a tradição do linhoFicha 13 a tradição do linho
Ficha 13 a tradição do linhoarturramisio
 
O que a bíblia fala sobre usos e costumes
O que a bíblia fala sobre usos e costumesO que a bíblia fala sobre usos e costumes
O que a bíblia fala sobre usos e costumesclaudemir silva
 
Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...
 Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ... Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...
Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...David Leaser
 
Origem da letra jota (j) e o nome jesus
Origem da letra jota (j) e o nome jesusOrigem da letra jota (j) e o nome jesus
Origem da letra jota (j) e o nome jesusASD Remanescentes
 
Evangelho de Mateus escrito em Hebraico e não em Grego
Evangelho de Mateus escrito em Hebraico e não em GregoEvangelho de Mateus escrito em Hebraico e não em Grego
Evangelho de Mateus escrito em Hebraico e não em GregoASD Remanescentes
 
The Future Of Work & The Work Of The Future
The Future Of Work & The Work Of The FutureThe Future Of Work & The Work Of The Future
The Future Of Work & The Work Of The FutureArturo Pelayo
 
Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)a16z
 

En vedette (12)

Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Aghatha 02 overview consultoria processos de ti versao slide share v1
Aghatha 02 overview consultoria processos de ti versao slide share v1Aghatha 02 overview consultoria processos de ti versao slide share v1
Aghatha 02 overview consultoria processos de ti versao slide share v1
 
Tabernáculo 2 (2)
Tabernáculo 2 (2)Tabernáculo 2 (2)
Tabernáculo 2 (2)
 
Ficha 13 a tradição do linho
Ficha 13 a tradição do linhoFicha 13 a tradição do linho
Ficha 13 a tradição do linho
 
O que a bíblia fala sobre usos e costumes
O que a bíblia fala sobre usos e costumesO que a bíblia fala sobre usos e costumes
O que a bíblia fala sobre usos e costumes
 
Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...
 Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ... Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...
Open Badges: How IBM Launched a Bold New Initiative to Attract, Engage, and ...
 
O linho
O linhoO linho
O linho
 
Origem da letra jota (j) e o nome jesus
Origem da letra jota (j) e o nome jesusOrigem da letra jota (j) e o nome jesus
Origem da letra jota (j) e o nome jesus
 
Evangelho de Mateus escrito em Hebraico e não em Grego
Evangelho de Mateus escrito em Hebraico e não em GregoEvangelho de Mateus escrito em Hebraico e não em Grego
Evangelho de Mateus escrito em Hebraico e não em Grego
 
O linho
O linhoO linho
O linho
 
The Future Of Work & The Work Of The Future
The Future Of Work & The Work Of The FutureThe Future Of Work & The Work Of The Future
The Future Of Work & The Work Of The Future
 
Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)Mobile Is Eating the World (2016)
Mobile Is Eating the World (2016)
 

Similaire à Smarty Template Engine

Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosRegis Magalhães
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE PoliglotaPhil Calçado
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da WebJose Berardo
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutórialucasleite
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoVinicius Rocha
 
Aula de HTML5 - DevCampos - www.devcampos.com.br
Aula de HTML5 - DevCampos - www.devcampos.com.brAula de HTML5 - DevCampos - www.devcampos.com.br
Aula de HTML5 - DevCampos - www.devcampos.com.brDevCampos
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebBruno Borges
 
Desenvolvimento para a Internet - Aula 03
Desenvolvimento para a Internet - Aula 03Desenvolvimento para a Internet - Aula 03
Desenvolvimento para a Internet - Aula 03Leandro Rezende
 

Similaire à Smarty Template Engine (20)

Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Smarty + PHP
Smarty + PHPSmarty + PHP
Smarty + PHP
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 
Aula 3
Aula 3Aula 3
Aula 3
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota
 
nDeveloper Framework
nDeveloper FrameworknDeveloper Framework
nDeveloper Framework
 
Aula
AulaAula
Aula
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutória
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 
ASP.NET MVC Mini Curso
ASP.NET MVC Mini CursoASP.NET MVC Mini Curso
ASP.NET MVC Mini Curso
 
Aula 2 - ASP
Aula 2 - ASPAula 2 - ASP
Aula 2 - ASP
 
Aula de HTML5 - DevCampos - www.devcampos.com.br
Aula de HTML5 - DevCampos - www.devcampos.com.brAula de HTML5 - DevCampos - www.devcampos.com.br
Aula de HTML5 - DevCampos - www.devcampos.com.br
 
Html
HtmlHtml
Html
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
 
Desenvolvimento para a Internet - Aula 03
Desenvolvimento para a Internet - Aula 03Desenvolvimento para a Internet - Aula 03
Desenvolvimento para a Internet - Aula 03
 
HTML5?
HTML5?HTML5?
HTML5?
 

Smarty Template Engine

  • 1.
  • 2. Diego Tremper  Zend Certified Engineer  Entusiasta PHP  Palestrante  Estudante
  • 3. 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
  • 4. Padrão Espaguete
  • 5. Padrão Espaguete
  • 6. 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
  • 7. Lógica Apresentação • Lógicas de negócio • Html • Acesso a dados • Design
  • 8. 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
  • 9. Biblioteca escrita em PHP que possibilita fazer a separação entre a lógica de negócio e a camada de apresentação
  • 10. 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
  • 11. Exemplo  Index.tpl Variáveis <html> <head> <title>{$titulo}</title> </head> <body> <h1>Seja bem vindo {$nome}!</h1> </body> </html>
  • 12. Exemplo  Index.php <?php // . . . $smarty->assign(‘nome’, ‘Diego’); $smarty->assign(‘titulo’, ‘Página de boas vindas’); $smarty->display(‘index.tpl’); // . . .
  • 13. 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
  • 14. <?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
  • 15. 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>
  • 16. 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>
  • 17. 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;
  • 18. 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/'; // . . .
  • 19. 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);
  • 20. 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}
  • 21. 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}
  • 22. 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‛}
  • 23. 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…
  • 24. 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>‛; }
  • 25. 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}
  • 26. 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;}
  • 27. 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,
  • 28. 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>
  • 29. 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>
  • 30. 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;}
  • 31. Modificadores de variáveis (cont…)  É possível também aninhar modificadores {‚Diego‛|cat:‛ Tremper‛|upper} OUTPUT: DIEGO TREMPER
  • 32. 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*}
  • 34. 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
  • 36. Obrigado!!! Contato: diegotremper@gmail.com LinkedIn: http://www.linkedin.com/in/diegotremper Blog: http://www.diegotremper.com
  • 37. Smarty: http://www.smarty.net/  PHP: http://www.php.net