20 de outubro de 2009
Muitas vezes ocorre a necessidade de escrever algo complexo na sua view, e a primeira coisa que você faz quando não conhece, é escrever os seus códigos lá. Seja uma função para formatar a data, pegar algum parâmetro via get, retornar a ação atual ou controlador.
A view deve se preocupar somente em renderizar os dados, ela nasceu com esse propósito, não devemos colocar a lógica da aplicação na view.
O que são View Helpers ?
É uma Classe auxiliar, com o propósito de abstrair os códigos que ficariam escritos na view.
Como escrever um Helper para a View ?
Pensei em uma situação real e simples para exemplo, segue abaixo:
<?
/*
Temos a variável $dados, precisamos formatar a data para o padrão brasileiro.
Vou mostrar duas formas de se fazer, uma utilizando o helper e outra sem.
*/
$dados = array(
array(
'nome' => 'Chuck Norris',
'data_cadastro' => '2002-12-01'
),
array(
'nome' => 'Darth Vader',
'data_cadastro' => '2003-01-01'
),
array(
'nome' => 'Goku',
'data_cadastro' => '2000-02-01'
),
array(
'nome' => 'Kuririn',
'data_cadastro' => '2005-09-01'
)
);
?>
<table summary="Employee Pay Sheet" id="box-table-a">
<thead>
<tr>
<th scope="col">Nome</th>
<th scope="col">Data Cadastro</th>
</tr>
</thead>
<tbody>
<? foreach ($dados as $cadastro) :
// (Sem Helper) Ops.. Acabei de sujar meu código !
$data = explode('-', $cadastro['data_cadastro']); ?>
<tr>
<td><?=$cadastro['nome']?></td>
<td><?=$data[2]. '/' .$data[1]. '/' .$data[0]?></td>
</tr>
<? endforeach; ?>
</tbody>
</table>
Escrevendo o Helper:
<?php
// application/default/views/helpers/ConverteData.php
class Zend_View_Helper_ConverteData {
public function converteData($data)
{
$data = explode('-', $data);
return $data[2]. '/' .$data[1]. '/' .$data[0];
}
}
Utilizando:
<? $dados = array( array( 'nome' => 'Chuck Norris', 'data_cadastro' => '2002-12-01' ), array( 'nome' => 'Darth Vader', 'data_cadastro' => '2003-01-01' ), array( 'nome' => 'Goku', 'data_cadastro' => '2000-02-01' ), array( 'nome' => 'Kuririn', 'data_cadastro' => '2005-09-01' ) ); ?> <table summary="Employee Pay Sheet" id="box-table-a"> <thead> <tr> <th scope="col">Nome</th> <th scope="col">Data Cadastro</th> </tr> </thead> <tbody> <? foreach ($dados as $cadastro) : ?> <tr> <td><?=$cadastro['nome']?></td> <!-- Agora vamos chamar o nosso Helper. --> <td><?=$this->converteData($cadastro['data_cadastro'])?></td> </tr> <? endforeach; ?> </tbody> </table>
Resultado:
Este exemplo foi simples, mas já da para perceber como você pode complicar as coisas escrevendo códigos php na view.
Fonte:
http://framework.zend.com/manual/en/zend.view.helpers.html
Tags: PHP, Zend Framework
Foi util para mim.
Obrigado.