Buscar

PHP Smarty Template Engine

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

 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 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_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="eu@exemplo.com"}
OUTPUT:
<a href="mailto:eu@exemplo.com">eu@exemplo.com</a>
{mailto address="eu@exemplo.com" text=‚contato"}
OUTPUT:
<a href="mailto:eu@exemplo.com">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: 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

Outros materiais