Criando um View Helper básico no Zend Framework 2

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

View Helper com Zend Framework 2

Esse post vai mostrar como construir um View Helper básico no Zend Framework 2.

Neste exemplo o nosso helper vai apenas retornar a URL absoluta da página/requisição atual.

[php]<?php
// ./module/Application/src/Application/View/Helper/AbsoluteUrl.php
namespace Application\View\Helper;

use Zend\Http\Request;
use Zend\View\Helper\AbstractHelper;

class AbsoluteUrl extends AbstractHelper
{
protected $request;

public function __construct(Request $request)
{
$this->request = $request;
}

public function __invoke()
{
return $this->request->getUri()->normalize();
}
}[/php]

Como você pode perceber, este helper possui uma dependência – um objeto Zend\Http\Request. O Zend Framework 2 possui uma maneira bem simples para injetar as dependências. Nós precisaremos de uma factory com a inicialização lógica para o nosso view helper:

[php]<?php
// ./module/Application/Module.php
namespace Application;

use Application\View\Helper\AbsoluteUrl;

class Module
{
public function getViewHelperConfig()
{
return array(
‘factories’ => array(
// a chave do array aqui é o nome pelo qual você
// chamará o seu view helper no script da view
‘absoluteUrl’ => function($sm) {
$locator = $sm->getServiceLocator();

// $sm é o gerenciador de view helpers (view
// helper manager), então nós precisamos
// coletar o gerenciador de serviços principal

return new AbsoluteUrl($locator->get(‘Request’));
},
),
);
}

// Se for copiar/colar esse exemplo, você precisará também
// do método getAutoloaderConfig(); acabei omitindo para
// deixar o exemplo mais curto.
}[/php]

E é isso! Agora podemos chamar nosso helper nas nossas views:

[php]A URL completa para esta página é: <?php echo $this->absoluteUrl(); ?>[/php]

Dúvidas? Postem nos comentários!

Bons estudos a todos! Um abraço e fiquem com Deus.

Texto adaptado do original: http://blog.evan.pro/creating-a-simple-view-helper-in-zend-framework-2