msgbartop
Lógica na Cabeça
msgbarbottom

Zend Framework Criando View Helpers

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:

zend-framework-criando-view-helpers

Este exemplo foi simples, mas já da para perceber como você pode complicar as coisas escrevendo códigos php na view.

Download.

Fonte:

http://framework.zend.com/manual/en/zend.view.helpers.html

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Twitter
  • Rec6
  • RSS

Tags: ,

1 Comentário

  1. |

    Foi util para mim.
    Obrigado.

    ResponderResponder

Deixe um comentário