|
Conteudo Dinâmico com Smarty e Array
por Gustavo Soares
Veremos neste artigo como podemos utilizar as funções dessa poderesa classe para templates que e a Smarty, para trabalhar um conteudo dinâmico utilizando array.
|
O que é Smarty?
Compile PHP Template Engine Smarty, ou simplesmente Smarty, é a biblioteca de template para PHP mais popular atualmente. Mais especificamente, ela fornece uma maneira fácil de controlar a separação da aplicação lógica e o conteúdo de sua apresentação. Isso é melhor descrito em uma situação onde o programador da aplicação e o designer executam diferentes funções ou, na maioria dos casos, não são a mesma pessoa.
Um dos aspectos únicos do Smarty é seu sistema de compilação. O Smarty lê os arquivos de template e cria scripts PHP a partir deles. Uma vez criados eles são executados sem ser necessário uma outra compilação. Com isso, os arquivos não são 'parseados'(analisados) toda vez que um template é solicitado, e cada template tem a total vantagem de soluções de cache do compilador PHP, tais como: Zend Accelerator ( http://www.zend.com/) ou PHP Accelerator (http://www.php-accelerator.co.uk).
Neste artigo não vou falar sobre instalação, configuração da Smarty. Você pode saber mais sobre isso em:
http://smarty.php.net/manual/pt_BR/installation.php
http://www.phpbrasil.com/articles/article.php/id/629
Supondo que você já tenha instalado a biblioteca Smarty, vamos ao que interessa.
Vejamos um simples exemplo de utilização da biblioteca Smarty:
arquivo index.php
<?php
// carrega a biblioteca do Smarty
require('smarty/Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/diretoriohome/exemplo/templates/';
$smarty->compile_dir = '/diretoriohome/exemplo/templates_c/';
$smarty->config_dir = '//diretoriohome/exemplo/configs/';
$smarty->cache_dir = '/diretoriohome/exemplo/cache/';
$smarty->assign('Titulo','Exemplo Smarty');
$smarty->assign('Nome','Gustavo Soares');
$smarty->display('index.tpl');
?>
|
No arquivo de exemplo index.php, instanciamos um novo objeto $smarty, definimos os diretórios:
template_dir
compile_dir
config_dir
cache_dir
|
isso para que a Smarty possa ler e compilar o seu template e até mesmo fazer cachê caso você habilite esta opção.
Logo abaixo utilizamos o método "assign" que é utilizado para setar valor a uma variavel que será enviada ao template.
A sintaxe padrão dela é:
$smarty->assign('NomeVariavel','Valor da Variavel');
A linha
$smarty->display('index.tpl');
utiliza o método display, onde você especifica qual será o arquivo de template do seu script.
- -
arquivo index.tpl
<html>
<head>
<title>{$Titulo}</title>
</head>
<body>
<h3>Olá, {$Nome}!</h3>
</body>
</html>
|
Observe que temos um simples arquivo HTML.
Note que na tag <title> temos um valor {$Titulo}. Se você voltar no arquivo index.php, veja que atribuímos um valor "Exemplo Smarty" à variável de template "Titulo". Quando executarmos este arquivo index.php no servidor, na barra de titulos aparecerá o valor "Exemplo Smarty", porque ele pegará essas informações no arquivo de template.
O mesmo acontece com a variável "Nome": ela aparecera na frase: Olá, {$Nome}! que na exibição mostrará: Olá, Gustavo Soares!
Viu como é facil?
Partiremos agora para a utilização de um conteúdo dinâmico dentro da smarty utilizando array, o que é o objetivo deste artigo.
Agora veremos a melhor parte do artigo, como trabalhar conteúdo dinâmico utilizando smarty e array.
Utilizaremos a função "foreach", uma alternativa para loops.
"Foreach" é usado para pegar cada elemento de uma matriz associativa simples.
A sintaxe para foreach é muito simples. Tags foreach devem ter seu par /foreach. Os parâmetros requeridos são from e item.
O nome do loop foreach pode ser qualquer coisa que você queira, feito de letras, números e sublinhados.
Exemplo:
A "key" contém a chave para cada valor do loop
A definição pode ser feita assim:
<?php
$smarty->assign("contatos", array(
array("fone" => "1", "fax" => "2", "cel" => "3"),
array("fone" => "111-2222", "fax" => "333-4444", "cel" => "555-6666")
));
?>
{foreach name=teste item=contato from=$contatos}
{foreach key=key item=item from=$contato}
{$key}: {$item}<br>
{/foreach}
{/foreach}
|
O resultado seria:
fone: 1<br>
fax: 2<br>
cel: 3<br>
fone: 111-2222<br>
fax: 333-4444<br>
cel: 555-6666<br>
|
Com estas informações, você já deve ser capaz de trabalhar conteúdos dinâmicos em seus scripts, utilizando essa poderosa ferramenta para templates que é a smarty.
That's all, folks!
Gustavo Soares.
euusolinux@gmail.com
Uberlândia-MG
Referencias:
http://www.php.net
http://smarty.php.net
http://www.smartybook.com
|
|
|