Zend Framework

Utilizando Zend Framework 2 no modo StandAlone

Posted on julho 4, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Introdução

O Zend Framework 2 fornece uma API extremamente rica, bem elaborada e bem testada. Possui componentes muito úteis para qualquer projeto de desenvolvimento web.

Neste artigo vamos aprender como configurar o Zend Framework 2 de forma StandAlone. Isso significa que podemos usar os componentes do Zend Framework de forma isolada e independente da estrutura MVC fornecida.

Instalando e Configurando o Ambiente

  1. Download do Zend Framework
  2. Acesse o link http://framework.zend.com/downloads/latest#ZF2 e baixe a última versão disponível para o Zend Framework 2, clicando no botão Download e escolhendo o formato desejado (zip para ambientes windows ou tar.gz para ambientes Linux). Obs: O pacote minimal normalmente é suficiente para a maioria das necessidades.

  3. Descompacte o pacote e grave o caminho completo de instalação
  4. Ao descompactar o pacote do Zend Framework, será criada uma estrutura de diretórios contendo os componentes do framework. Obtenha o caminho completo de instalação, incluindo o subdiretório library/ para podermos setá-lo no include path do php. No meu caso, o caminho completo ficou sendo:
    /home/douglas/ZendFramework-minimal-2.x.x/library/

  5. Configurando o include path e autoloader
  6. Vamos criar um arquivo header.php que deverá ser incluído em todos os seus scripts que utilizarão componentes independentes do Zend Framework 2. Esse arquivo é responsável por configurar o caminho do framework no include path do PHP e por configurar o Auto Loader padrão para as classes presentes no framework da Zend.

    Veja que estamos o componente StandardAutoLoader do próprio Zend Framework. É um autoloder compatível com PSR-0:

    PS: Lembre-se de alterar o caminho especificado na variável $zf2_path de acordo com o caminho da sua instalação:

    <?php
    $zf2_path = '/home/douglas/ZendFramework-minimal-2.x.x/library/';
    set_include_path(get_include_path() . PATH_SEPARATOR . $zf2_path);
    
    require_once($zf2_path . '/Zend/Loader/StandardAutoloader.php');
    $loader = new Zend\Loader\StandardAutoloader(
            array(
                    'namespaces' => array(
                            'Zend' => $zf2_path . '/Zend',
                    ),
                    'fallback_autoloader' => true,
            )
    );
    $loader->register();
    

Exemplos de uso

Neste momento já temos o ambiente pronto para que você possa usar os componentes do Zend Framework2 de forma independente. Basta incluir o arquivo header.php criado anteriormente e instanciar as classes desejadas. Abaixo eu reuni alguns exemplos simples e interessantes. Aconselho você consultar a documentação de referência no próprio site do projeto para mais componentes e para mais detalhes sobre suas utilizações. (Veja o link na área Referências)

Os componentes utilizados no exemplo abaixo foram: Zend\Validator, Zend\Http, Zend\Crypt, Zend\Mail, Zend\Log, Zend\Json e Zend\Filter

<?php
// inclui header zf2 autoload
require_once("header.php");

$validator = new Zend\I18n\Validator\Alnum();
var_dump($validator->isValid('Abcd')); // true
var_dump($validator->isValid('teste??')); // false

// Realizando requisicoes HTTP GET
$request = new Zend\Http\Request();
$request->setUri('http://www.google.com/search?q=php'); // URL traz resultado de busca por PHP
$request->setMethod('GET'); // method

$client = new Zend\Http\Client();
$response = $client->dispatch($request);

$content = $response->getBody(); // corpo do retorno da requisicao
var_dump($content); 

// criptografia
$bcrypt = new Zend\Crypt\Password\Bcrypt;
$str_encrypted = $bcrypt->create('Pasqua Tecnologia');
var_dump($str_encrypted);

var_dump($bcrypt->verify('Pasqua Tecnologia', $str_encrypted)); // true
var_dump($bcrypt->verify('Pasqua', $str_encrypted)); // false

// enviando email
use Zend\Mail;

$mail = new Mail\Message();
$mail->setBody('Corpo do email.');
$mail->setFrom('suporte@dominio-exemplo.org', 'Suporte');
$mail->addTo('douglas.pasqua@gmail.com', 'Douglas V. Pasqua');
$mail->setSubject('Apenas Teste do ZF2 Mail');

$transport = new Mail\Transport\Sendmail();
$transport->send($mail); // envia o email

// logging
$writer = new Zend\Log\Writer\Stream('/tmp/logfile');
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('Mensagem Informativa'); // grava mensagem no log /tmp/logfile

// JSON
$phpNative = array('nome' => 'Douglas V. Pasqua', 'idade' => 30);

$json = Zend\Json\Json::encode($phpNative);
var_dump($json);

// Filtros
$strtolower = new Zend\Filter\StringToLower;
echo $strtolower('I LOVE ZF2!'); // i love zf2!

Referências

http://framework.zend.com/manual/2.2/en/index.html

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Posted on maio 29, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Esta dica é para você que precisa renderizar uma view diferente do action padrão no Zend Framework 2. Você precisara usar a função setTemplate do objeto ViewModel:

public function indexAction()
{
    $view = new ViewModel(array('variable' => $value));
    $view->setTemplate('module/controler/action.phtml'); // caminho para view a ser renderizada
    return $view;
}

Opicionalmente, você pode desabilitar a renderização do layout, usando o método setTerminal:

public function indexAction()
{
    $view = new ViewModel(array('variable' => $value));
    $view->setTerminal(true); // desabilita a renderização do layout
    $view->setTemplate('module/controler/action.phtml'); // caminho para view a ser renderizada
    return $view;
}

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Desabilitando a renderização do Layout e View
Zend Framework 2: Retornando dados no formato JSON no Controller
Zend Framework 2: Renderizando a view dentro do Controller
Zend Framework 2: Chamando View Helpers dentro do Controller
Zend Framework 2: Redirecionamento de Rota

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Redirecionamento de Rota

Posted on maio 29, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Nesta dica temos como realizar o redirecionamento de rotas dentro da camada de Controller no Zend Framework 2. Lembre-se que isso é válido de acordo com as rotas que você tem configurado no arquivo module.config.php do seu módulo.

Redirecionamento simples de rota:

public function indexAction()
{
    return $this->redirect()->toRoute('nome_da_rota'); // redireciona para outra rota configurada no module.config.php
}

Você pode especificar também o action e/ou seus parâmetros:

public function indexAction()
{
    // redireciona para outra rota configurada no module.config.php, espeficando action e parametros
    return $this->redirect()->toRoute('nome_da_rota', array('action' => 'nome_do_action', 'id' => 9999)); 
}

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Desabilitando a renderização do Layout e View
Zend Framework 2: Retornando dados no formato JSON no Controller
Zend Framework 2: Renderizando a view dentro do Controller
Zend Framework 2: Chamando View Helpers dentro do Controller
Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Ler Post Completo | Make a Comment ( None so far )

Webservices SOAP com Zend Framework 2

Posted on maio 18, 2013. Filed under: PHP, Zend Framework | Tags:, , , , |

Introdução

Neste artigo vamos aprender como criar webservices SOAP com Zend Framework 2. Em artigo anterior, Webservices com Zend Framework parte I, vimos como trabalhar com Webservices SOAP no Zend Framework I. Portanto, este artigo serve com uma atualização do anterior.

O exemplo demonstrado neste artigo utiliza o Zend Framework 2 de forma Standalone, ou seja, de forma independente da estrutura do MVC.

Preparação

Para preparar o ambiente para o Webservice com o Zend Framework 2 de forma Standalone, iremos realizar dois processos: 1) Baixar e descompactar o pacote do Zend Framework. 2) Configurar o autoload do php para que seja possível incluir automaticamente as bibliotecas do Zend Framework necessárias para nosso objetivo.

  1. Baixando e descompactando o Zend Framework
  2. Acesse o link abaixo e faça o download do pacote Zend Framework 2.x.x Minimal:

    http://framework.zend.com/downloads/latest
    PS: Não há necessidade de baixar o pacote pelo site da Zend. Pode baixar pelo link direto. (.tar.gz ou .zip)

    Descompacte o pacote dentro do diretório onde irá criar seu webservice SOAP (server ou client) e faça um link (ou copie) o diretório library/Zend para o diretório corrente. Veja exemplo de como fazer no Linux:

    $ tar zxpf ZendFramework-minimal-2.x.x.tgz
    $ ln -s ./ZendFramework-minimal-2.x.x/library/Zend
    

    PS: Outra opção é colocar o caminho completo para o diretório ZendFramework-minimal-2.x.x/library/Zend dentro do include path do php

  3. Configurando o autoload
  4. É necessário registrarmos no autoload do PHP a lógica para que nosso script possa incluir automaticamente todas as libs do Zend Framework necessárias. Esse procedimento irá nos poupar o trabalho de ter que incluir manualmente todos os arquivos necessários, que é uma opção muito custosa.

    Crie um arquivo chamado autoload-zend.php, com o seguinte conteúdo:

    <?php
    // auto load compativel com zend framework
    spl_autoload_register(function ($className) {
    
          // We assume classes with underscores are Zend Framework pseudo namespaced classes
          if (strpos($className, '_' ) !== FALSE) {
                $className = str_replace('_', '/', $className );
          }
    
          // This line provides real php 5.3 namespace support
          $file = str_replace('\\', '/', $className . '.php');
    
          // search include path for the file.
          $include_dirs = explode(PATH_SEPARATOR, get_include_path());
    
          foreach($include_dirs as $dir) {
            $full_file = $dir . '/'. $file;
    
            if (file_exists($full_file)) {
                require_once $full_file;
                return true;
            }
          }
    
          return false;
    });
    
  5. Criando o Webservice SOAP
  6. Para criar nosso Webservice SOAP, vamos utilizar a classe Zend\Soap\Server e Zend\Soap\AutoDiscover. A classe Zend\Soap\AutoDiscover será utilizada para geração automática do WSDL necessário para a comunicação do protocolo SOAP. É possível trabalhar no PHP no modo non-WSDL, sem a utilização do WSDL. Porém é uma pratica não aconselhada, pois a maioria dos Webservices SOAP em outras linguagens não permite o modo non-WSDL. A classe Zend\Soap\Server é responsável por gerenciar o Webservice em si.

    Segue abaixo o código do Webservice SOAP de exemplo (Server):
    No nosso exemplo, o webservice estará servindo a funcionalidade de um calculadora básica: soma e subtração

    Arquivo soap-server.php

    <?php
    // incluir o autoload para o zf2
    require_once("autoload-zend.php");
    
    if (isset($_GET['wsdl'])) {
            // geracao automatica do WSDL
            $autodiscover = new Zend\Soap\AutoDiscover();
            $autodiscover->setUri('http://127.0.0.1/services/soap-server.php');
    
            // servindo a classe Calculadora
            $autodiscover->setClass('Calculadora');
            $autodiscover->handle();
    } else {
            // instancia do Soao Server
            $soap = new Zend\Soap\Server("http://127.0.0.1/services/soap-server.php?wsdl");
    
            // servindo a classe Calculadora
            $soap->setClass('Calculadora');
            $soap->handle();
            exit;
    }
    
    /*
     * Classe calculadora
     */
    class Calculadora {
    
            /**
             * Realiza Soma
             * @param integer $a
             * @param integer $b
             * @return integer
             */
            public function soma($a, $b) {
                    return $a + $b;
            }
    
            /**
             * Realiza Subtracao
             * @param integer $a
             * @param integer $b
             * @return integer
             */
            public function subtrai($a, $b) {
                    return $a - $b;
            }
    }
    

    Considerações:

    • Lembre-se de modificar a URL onde seu webservice esta acessível. Trocando http://127.0.0.1/services/soap-server.php pela URL correta de acordo com o seu ambiente.
    • Preste atenção nos comentários utilizados nos métodos da classe Calculadora. Eles são utilizados para ajudar o Zend\Soap\AutoDiscover na criação do WSDL. Lembre-se de ajustá-los de acordo com os tipos de dados manipulados pelos métodos do seu webservice.
  7. Criando o Webservice Cliente
  8. Vamos demonstrar como criar o webservice cliente para consumir o webservice anterior usando as classes do Zend Framework 2. Segue abaixo a implementação do cliente do webservice usando a classe Zend\Soap\Client:

    Arquivo soap-client.php

    <?php
    // incluir o autoload para o zf2
    require_once("autoload-zend.php");
    
    // canal de comunicacao com o webservice, apontar para a URL do WSDL
    $soap = new Zend\Soap\Client("http://127.0.0.1/services/soap-server.php?wsdl");
    
    // utilizando as funcoes do webservice
    echo $soap->soma(5, 5) . "<br />"; // 10
    echo $soap->subtrai(100, 50) . "<br />"; // 50
    
  9. Referências
  10. Neste artigo foi abordado a essência da criação de Webservices SOAP com Zend Framework 2. Para se aprofundar mais no assunto, segue links da documentação oficial do Zend Framework 2 referente a Webservices SOAP:

    http://framework.zend.com/manual/2.0/en/modules/zend.soap.server.html
    http://framework.zend.com/manual/2.0/en/modules/zend.soap.client.html
    http://framework.zend.com/manual/2.0/en/modules/zend.soap.auto-discovery.html

    Caso queira uma introdução bem feita sobre a arquitetura do protocolo SOAP:

    http://www.w3schools.com/soap/default.asp

Ler Post Completo | Make a Comment ( 3 so far )

Zend Framework 2: Criando View Helpers para formatação de CPF e CNPJ

Posted on maio 4, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Introdução

Neste artigo demonstro a criação de View Helpers para formatação de CPF e CNPJ no Zend Framework 2. Segue abaixo os códigos prontos para uso. Tenha um bom proveito.

View Helper para formatar CPF

Segue abaixo o View Helper para formatação de CPF:

<?php
// module/Application/src/Application/View/Helper/FormataCPF.php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;

class FormataCPF extends AbstractHelper
{
	public function __invoke($cpf)
	{
		// limpar tudo que não for digito
		$cpf = preg_replace('/[^0-9]/', '', trim($cpf));
		if(strlen($cpf) != 11) {
			// quantidade de numeros inválidos para cpf
			return null;
		}
		
		// formatar cpf
		$cpf_formatado = substr($cpf, 0, 3) . '.';
		$cpf_formatado .= substr($cpf, 3, 3) . '.';
		$cpf_formatado .= substr($cpf, 6, 3) . '-';
		$cpf_formatado .= substr($cpf, 9, 3);
		return $cpf_formatado;
	}
}

View Helper para Formatar CNPJ

Segue abaixo o View Helper para formatação de CNPJ:

// module/Application/src/Application/View/Helper/FormataCNPJ.php
<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;

class FormataCNPJ extends AbstractHelper
{
	public function __invoke($cnpj)
	{
		$cnpj = preg_replace('/[^0-9]/', '', trim($cnpj));
		if(strlen($cnpj) != 14) {
			// quantidade de numeros inválidos para cnpj
			return null;
		}
		
		$cnpj_formatado = substr($cnpj, 0, 2) . '.';
		$cnpj_formatado .= substr($cnpj, 2, 3) . '.';
		$cnpj_formatado .= substr($cnpj, 5, 3) . '/';
		$cnpj_formatado .= substr($cnpj, 8, 4) . '-';
		$cnpj_formatado .= substr($cnpj, 12, 2);
		return $cnpj_formatado;
	}
}

View Helper para formatar CPF e CNPJ juntos

Segue o View Helper abaixo para caso você queira utilizar apenas um View Helper para formatar tanto CPF quanto CNPJ. O código diferencia o CPF do CNPJ pela quantidade de dígitos: 11 dígitos é CPF. 14 dígitos é CNPJ:

<?php
// module/Application/src/Application/View/Helper/FormataCPFouCNPJ.php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;

class FormataCPFouCNPJ extends AbstractHelper
{
	public function __invoke($numero)
	{
		// limpar tudo que não for digito 
		$numero = preg_replace('/[^0-9]/', '', trim($numero));
		if(strlen($numero) == 11) {
			// formata cpf
			$cpf_formatado = substr($numero, 0, 3) . '.';
			$cpf_formatado .= substr($numero, 3, 3) . '.';
			$cpf_formatado .= substr($numero, 6, 3) . '-';
			$cpf_formatado .= substr($numero, 9, 3);
			return $cpf_formatado;
						
		} else if(strlen($numero) == 14) {
			// formata cnpj
			$cnpj_formatado = substr($numero, 0, 2) . '.';
			$cnpj_formatado .= substr($numero, 2, 3) . '.';
			$cnpj_formatado .= substr($numero, 5, 3) . '/';
			$cnpj_formatado .= substr($numero, 8, 4) . '-';
			$cnpj_formatado .= substr($numero, 12, 2);
			return $cnpj_formatado;
		} else {
			// quantidade de numeros inválidos para cpf ou cnpj
			return null;
		}
	}
}

Configurando o Module.php

Não esqueça de instanciar os View Helpers criados no arquivo Module.php:

// module/Application/Module.php
public function getViewHelperConfig()
{
	return array(	
			'invokables' => array (
					'formataCPF' => new View\Helper\FormataCPF(),
					'formataCNPJ' => new View\Helper\FormataCNPJ(),
					'formataCPFouCNPJ' => new View\Helper\FormataCPFouCNPJ(),
			),
	);
}

Usando os View Helpers na camada de View

<ul>
	<!--  usando formataCPF  -->
	<li>CPF: <?php echo $this->formataCPF('99999999999'); // formatando CPF?></li>

	<!--  usando formataCNPJ  -->
	<li>CNPJ: <?php echo $this->formataCNPJ('99999999999999'); // formatando CNPJ ?></li>

	<!--  usando formataCPFouCNPJ  -->
	<li>CPF: <?php echo $this->formataCPFouCNPJ('99999999999'); // formatando CPF?></li>
	<li>CNPJ: <?php echo $this->formataCPFouCNPJ('99999999999999'); // formatando CNPJ ?></li>	
	
</ul>

PS: Observe que você pode passar o número CPF/CNPJ já formatado para as funções criadas acima. A função já faz o tratamento de remover todos caracteres que não forem dígitos antes de realizar a formatação devida.

Resultado:

ScreenShot110

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Retornando dados no formato JSON no Controller

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

O Zend Framework 2 disponibiliza uma forma simples de retornar dados no formato JSON na camada de View. Basta usar a classe JsonModel no lugar de ViewModel no action do seu Controller. Para utilizar essa funcionalidade, primeiro é necessário habilitar o JsonStrategy dentro do arquivo module.config.php referente ao seu módulo. Veja como fazer abaixo:

// arquivo module.config.php
'view_manager' => array(
		'display_not_found_reason' => true,
		'display_exceptions'       => true,
		'doctype'                  => 'HTML5',
		'not_found_template'       => 'error/404',
		'exception_template'       => 'error/index',
		'template_map' => array(
				'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
				'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
				'error/404'               => __DIR__ . '/../view/error/404.phtml',
				'error/index'             => __DIR__ . '/../view/error/index.phtml',
		),
		'template_path_stack' => array(
				__DIR__ . '/../view',
		),
		'strategies' => array(
				'ViewJsonStrategy',
		),
),

Para gerar um conteúdo no formato JSON, basta retornar uma instância da classe JsonModel. Veja exemplo abaixo:

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;

class IndexController extends AbstractActionController
{
	public function indexAction()
	{
		return new JsonModel(array(
				'nome' => 'Douglas V. Pasqua',
				'email' => 'blablabla@bla.xyz',
		));
	}
}

Ao acessar o action, a saída gerada seria:

{"nome":"Douglas V. Pasqua","email":"blablabla@bla.xyz"}

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Desabilitando a renderização do Layout e View
Zend Framework 2: Renderizando a view dentro do Controller
Zend Framework 2: Chamando View Helpers dentro do Controller
Zend Framework 2: Redirecionamento de Rota
Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Desabilitando a renderização do Layout e View

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

  • Desabilitando a renderização de Layout e View (Ambos)
  • Desabilitar a renderização do Layout e View é bem simples. Veja abaixo:

    namespace Application\Controller;
    
    use Zend\Mvc\Controller\AbstractActionController;
    
    class IndexController extends AbstractActionController
    {
    	public function indexAction()
    	{	
    	     echo "texto qualquer";   
    	     return $this->response;
    	}
    }
    
    
  • Desabilitando somente a renderização do Layout
  • Segue exemplo abaixo caso queira desabilitar somente a renderização do Layout, mas manter a renderização da view:

    namespace Application\Controller;
    
    use Zend\Mvc\Controller\AbstractActionController;
    use Zend\View\Model\ViewModel;
    
    class IndexController extends AbstractActionController
    {
    	public function indexAction()
    	{	
    		$view_params = array(); // parametros passados para a view
    		$viewModel = new ViewModel($view_params);
    		$viewModel->setTerminal(true); // desabilita a renderizacao do layout
    		return $viewModel;
    	}
    }
    

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Renderizando a view dentro do Controller
Zend Framework 2: Retornando dados no formato JSON no Controller
Zend Framework 2: Chamando View Helpers dentro do Controller
Zend Framework 2: Redirecionamento de Rota
Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Renderizando a view dentro do Controller

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Renderizar a View dentro do Controller pode ser útil caso desejamos retornar a view renderizada em algum outro formato que não seja o padrão. A view renderizada será retornada para dentro de uma variável. Dessa forma podemos retornar o conteúdo da view para um requisição ajax por exemplo. Veja abaixo como fazer:

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
	public function indexAction()
	{
		$view_params = array (
				'nome' => 'Douglas V. Pasqua',
		);
		
		$viewModel = new ViewModel($view_params);
		$viewModel->setTemplate('application/index/index.phtml'); // caminho para o template que será renderizado
		$html = $this->getServiceLocator()->get('ViewRenderer')->render($viewModel);
				
		// enviar conteudo de $html via ajax
	}
}

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Desabilitando a renderização do Layout e View
Zend Framework 2: Retornando dados no formato JSON no Controller
Zend Framework 2: Chamando View Helpers dentro do Controller
Zend Framework 2: Redirecionamento de Rota
Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2: Chamando View Helpers dentro do Controller

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

É possível fazer chamadas para view helpers dentro do Controller. Muito útil em determinadas situações. Abaixo temos o exemplo da utilização do view helper chamado paginationControl. A situação foi útil pois precisava retornar o html referente a paginação de uma lista via requisição Ajax.

// instanciando o Zend Paginator de acordo com suas proprias regras
$paginator = new \Zend\Paginator\Paginator(new \Zend\Paginator\Adapter\ArrayAdapter($array));
...

// obtendo a instância do view helper chamado paginationControl dentro do Controller
$paginationControlHelper = $this->getServiceLocator()->get('viewhelpermanager')->get('paginationControl');

// usando o view helper dentro do controller
$html = $paginationControlHelper($paginator, 'Sliding', 'module/paginator_control');

// temos dentro do $html o renderização da paginação retornada pelo View Helper paginationControl
// podemos usar o $html para retorno de um requisição ajax

Outras dicas para Controllers no Zend Framework 2

Zend Framework 2: Desabilitando a renderização do Layout e View
Zend Framework 2: Renderizando a view dentro do Controller
Zend Framework 2: Retornando dados no formato JSON no Controller
Zend Framework 2: Redirecionamento de Rota
Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Ler Post Completo | Make a Comment ( None so far )

Zend Framework 2 Tips: Usando Doctrine em testes unitários

Posted on março 14, 2013. Filed under: PHP, Tips, Zend Framework | Tags:, , , |

Introdução

Neste artigo vamos aprender como instanciar o Entity Manager do Doctrine nas classes de teste unitário no Zend Framework 2. Se você usa Doctrine no seu projeto, é bem provável que algumas classes que precisará testar possuem a dependência do Entity Manager. É sobre isso que trata esse artigo.

Caso necessário, em artigo anterior, já vimos como instalar os módulos Doctrine, ZFTool e Firephp no Zend Framework 2.

Registrando os módulos do Doctrine no Config de testes

Se você criou seu módulo do Zend Framework através do ZFTool provavelmente foi criado uma pasta chamada test/ dentro do diretório pai do seu módulo. No caso de exemplo do módulo Application, que já vem instalado no esqueleto inicial do projeto, o caminho ficaria: module/Application/test/.

O primeiro passo é registrar os módulos do Doctrine dentro do arquivo TestConfig.php.dist que esta dentro do diretório test/ do seu módulo:

<?php
// module/Application/test/TestConfig.php.dist
return array(
    'modules' => array(
        'Application',
        'DoctrineModule',
        'DoctrineORMModule'
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            '../../../config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            'module',
            'vendor',
        ),
    ),
);

Bootstrap

Existe um arquivo chamado Bootstrap.php dentro do diretório test/ do seu módulo. Esse arquivo é responsável por inicializar todos os parâmetros necessários para que você possa trabalhar com testes unitários no Zend Framework.

Vamos criar dentro do arquivo Bootstrap.php um método estático que será responsável por retornar o Entity Manager do Doctrine. É através deste método que vamos acessar o Entity Manager em nossos testes:

<?php
// module/Application/test/Bootstrap.php
..
    public static function getEntityManager()
    {
    	$sm = static::getServiceManager();
    	return $sm->get('doctrine.entitymanager.orm_default');
    }
    
}

Bootstrap::init();

Acessando o Entity Manager

Por final, vamos acessar o Entity Manager dentro de nossas classes de teste. Podemos estar testando um Controller, um Model ou qualquer outro componente. Basta chamarmos o método estático Bootstrap::getEntityManager();.

Não se esqueça de usar o namespace do Bootstrap no início do seu script:

<?php
// module/Application/test/ApplicationTest/Model/AlbumTest.php
namespace ApplicationTest\Model;
use ApplicationTest\Bootstrap;
//.... setUp, etc.

public function testAlbum()
{
	$em = Bootstrap::getEntityManager();
	$album = new Album($em);
}
Ler Post Completo | Make a Comment ( None so far )

« Entradas Anteriores

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: