Smarty Template Engine
-
Upload
diegotremper -
Category
Technology
-
view
2.898 -
download
2
description
Transcript of Smarty Template Engine
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
Wikipédia: http://pt.wikipedia.org/wiki/Código_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.”
Lógica
• Lógicas de negócio
• Acesso a dados
Apresentação
• Html
• 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
<html><head><title>{$titulo}</title></head><body>
<h1>Seja bem vindo {$nome}!</h1></body></html>
Variáveis
Exemplo
Index.php
<?php
// . . .$smarty->assign(‘nome’, ‘Diego’);$smarty->assign(‘titulo’, ‘Página de boas vindas’);$smarty->display(‘index.tpl’);// . . .
Variáveis
Smarty
Index.tpl
<?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></head><body><h1>Seja bem vindo <?php echo $this->_tpl_vars['nome']; ?>!</h1></body></html>
Compilação
<?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></head><body><h1>Seja bem vindo <?php echo $this->_tpl_vars['nome']; ?>!</h1></body></html>
Código gerado pelo Smarty
<html><head><title>Página de boas vindas</title></head><body><h1>Seja bem vindo Diego!</h1></body></html>
Após execução do PHP
Sintaxe
Todas as tags de template do Smarty contém delimitadores. Por padrão, estes delimitadores são { e }, mas eles podem ser alterados.
<html><head><title>{$titulo}</title></head><body>
<h1>Seja bem vindo {$nome}!</h1></body></html>
Tags HTMLTags Smarty
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 queo 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_variavel", $valor);
Variáveis (cont..)
require 'Smarty.class.php';
$smarty = new Smarty;
$valor = 10;
$smarty->assign(‚nome_variavel", $valor);
$smarty->display('index.tpl');
O valor da variável é: {$nome_variavel}
index.tpl
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}
foreach ($nomes_empregados as $nome) {echo ‚Nome: ‛ . $nome . ‚<br>‛;
}
Semelhante:
Funções internas - if
{if $nome == "Diego"}Bem vindo {$nome}!
{elseif $nome == "Andre"}Bom dia professor {$nome}!
{else}Bom dia senhor {$nome}
{/if}
{if $nome == " Diego" || $nome == " Andre "}. . .{/if}
Funções internas - include
{* inclue o template cabecalho.tpl *}{include file="cabecalho.tpl"}
{* usando o caminho absoluto *}{include file="file:C:/local/meus/templates/cabecalho.tpl"}
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="1000">Alegrete</option><option value="1001">Canoas</option><option value="1002">Erechim</option><option value="1003" selected="selected">Porto Alegre</option></select>
Funções personalizadas – mailto
{mailto address="[email protected]"}
OUTPUT:<a href="mailto:[email protected]">[email protected]</a>
{mailto address="[email protected]" text=‚contato"}
OUTPUT:<a href="mailto:[email protected]">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:"..."}
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: [email protected]: http://www.linkedin.com/in/diegotremper
Blog: http://www.diegotremper.com