Smarty Template Engine

Post on 25-Jun-2015

2.906 views 2 download

Tags:

description

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

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="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.comLinkedIn: http://www.linkedin.com/in/diegotremper

Blog: http://www.diegotremper.com

Smarty: http://www.smarty.net/ PHP: http://www.php.net