Zend Framework 2: Criando View Helpers para formatação de CPF e CNPJ
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:
Ler Post Completo | Make a Comment ( None so far )