Smarty – Pra mudar sua vida

Monday, June 30, 2008
By PHPSP Administrator

O artigo a seguir foi publicado originalmente por Jonathan Cardozo no site http://phpdeverdade.blogspot.com/2007/05/smarty-pra-mudar-sua-vida.html

As informações disponibilizadas neste artigo são de responsabilidade de Jonathan Cardozo do site http://phpdeverdade.blogspot.com/

Introdução

Olá Pessoal, como vão?

Nesse post iremos falar sobre um assunto muito interessante, geradores de templates, especificamente do Smarty, um projeto apoiado pelos criadores do PHP.

O que diabo é Smarty?

Bom, primeiro irei explicar o que é, e para que serve um gerador de templates. Um gerador de templates e responsável pela separação do código da interface de seu projeto, alguns ainda pensam num gerador de templates como um programa que gera layouts automaticamente mas não é esse o caso, por exemplo, você tem um form de envio de e-mail, quando você usa o Smarty você separa o form html da parte que cuida dos dados enviados nesse form.
O Smarty usa arquivos html com tags especiais para inserir os dados vindos do arquivo de controle php, e como se o template fosse uma fantasia de seus programa.

Para que serve mesmo?

Bem, eu poderia passar dias aqui escrevendo suas funcionalidade mas vou explicar dando exemplos práticos.

* Você tem um projeto onde trabalha com equipes distintas para o layout e a programação, o Smarty resolve.
* Você tem um site onde tem a opção do usuário escolher um layout personalizado, o Smarty resolve.
* Você tem um projeto onde vai ter que estar sempre mudando de layout periodicamente, como estações do ano, festas e coisas assim, o Smarty resolve.
* Seu projeto usa MVC(falaremos mais a frente) para maior eficiência nas atualizações, vai precisar do Smarty(ou outro gerador).

Vamos Começar

Vamos partir para a diversão em sí. Vamos instalar o Smarty, uma tarefa bem simples.
Primeiro vamos baixar a versão mais recente em http://smarty.php.net, nesse site também encontramos a documentação do projeto, e em português, que é muito boa por sinal.
Baixe o arquivo compactado em tar.gz, por isso vai precisar de um programa de compressão, existem milhares grátis por ai.
Descompacte o arquivo em uma pasta dentro de seu servidor web. Feito isso vai ver que na pasta do Smarty existem algumas pastas, mas você só ira precisar da pasta libs (mas não recomendo que apague os outros arquivos, são alguns exemplos e readmes) e pronto está instalado.

Hello World, nosso primeiro exemplo

Vamos fazer nosso primeiro exemplo, um script bem simples só para demostrar o funcionamento do Smarty.
O Smarty trabalha com uma estrutura de pastas bem intuitivas:

* templates – é a pasta onde ficarão os arquivos de template.
* templates_c – é a pasta onde será compilados os templates.
* configs – é a pasta onde ficarão os arquivos de configuração, não falarei aqui, mas é um recurso bastante interessante, veja no manual do projeto.
* cache – é a pasta de cache do smarty, que também é um recurso muito bom, mas não será citado nesse post.

Essas pastas se chamam assim por padrão, mas você pode configurar o Smarty para utilizar outros nomes, veremos a frente.
Crie uma pasta para nosso projeto na raiz do seu servidor, chame-a de HelloWorldSmarty, dentro dessa pasta, crie os 3 diretorios: templates, templates_c e configs.
Dentro do diretório de nosso projeto crie um arquivo index.php, e dentro dele vamos chamar o smarty, veja só:

<[? # @File: Index.php - Smarty Hello World

# Requendo a Classe do Smarty
# Considerando que a pasta do Smarty é "smarty"
require("../smarty/libs/Smarty.class.php");

# Criando objeto da classe $mySmarty = new Smarty; # Passando algumas configurações # Ativando a chegagem na compilação $mySmarty->compile_check = true;
# Ativando a depuração do codigo
$mySmarty->debugging = true;
# Se voce deseja definir os nomes das pastas do smarty use
# $mySmarty->template_dir = "DIRETORIO_DESEJADO";
# $mySmarty->compile_dir = "DIRETORIO_DESEJADO";
# $mySmarty->cache_dir = "DIRETORIO_DESEJADO";

# Vamos mandar algumas variaveis pro tempalte
# Sintaxe - $mySmarty->assign("NOME_DA_VARIAVEL","VALOR");
$mySmarty->assign("nome","Php de Verdade");

# Agora vamos mandar o smarty renderizar o arquivo final
# Informe o template que sera procurado no diretorio de templates
$mySmarty->display("index.tpl.html");

?]>

Pronto, o código está bem comentado então vamos passar para outro passo, o template. O template é um arquivo em HTML(“<>”) com marcações específicas do Smarty(“{}”), entao vá na pasta templates e crie o arquivo que estou chamando no nosso arquivo de controle, “index.tpl.html”, pode chama-lo como quiser, com qualquer extensão também, não importa, desde que chame corretamente no arquivo de controle. Ai vai o codigo dele:

* Atenção: Pessoal to usando as tags HTML(“<>”) assim (“<[]>”) porque o blog bloqueia tags html viu, mas na hora de escrever no arquivo escreve tags HTML mesmo.

<

&gt;
&lt;[body]&gt;
&lt;[p]&gt;Hello World em Smarty, seja bem vindo {$nome}&lt;[/p]&gt;
&lt;[body]&gt;
&lt;

>

Pronto, salve o arquivo, é um template simples que so exibira a variavel “nome”, veja que as tags do Smarty ficam dentro dos “{}” mas isso pode ser configurado também.
Vá em seu navegador (de preferência Firefox, to brincando mas é o melhor) e digite o endereço para seu arquivo de controle no nosso case seria algo como “http://localhost/HelloWorldSmarty/index.php” e veja o resultado ele deve exibir a mensagem: “Hello World em Smarty, seja bem vindo Php de Verdade”.

Conclusão

Pronto pessoal esse foi nosso primeiro exemplo do Smarty, espero que tenham gostado e comentem e aí, nos próximos capítulos vamos trazer mais exemplos, demonstrando o poder dessa ferramenta, grande abraço.