Last active
March 2, 2016 19:55
-
-
Save andervilo02/9dd706dd401900ad6ea6 to your computer and use it in GitHub Desktop.
Revisions
-
andervilo02 revised this gist
Mar 2, 2016 . 1 changed file with 42 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,42 @@ <?php class Application_Form_Teste extends Zend_Form { public function init() { $this->setName('fornecedor'); $this->setAttrib('class', 'form-horizontal'); $this->addElementPrefixPath( 'Validate', APPLICATION_PATH . '/forms/validate/', 'validate' ); } $cnpj = new Zend_Form_Element_Text('cnpj'); $cnpj->setLabel('CNPJ') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator($notEmpty, true) ->addValidator('Cnpj') ->setAttrib('class', 'form-control cnpj') ->setAttrib('placeholder', 'CNPJ'); $uf = new Zend_Form_Element_Text('uf'); $uf->setLabel('Estado') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator($notEmpty, true) ->addValidator('Estado') ->setAttrib('class', 'form-control text-uppercase') ->setAttrib('v-model', 'fornecedor.uf') // ->setAttrib('v-on:keyup', 'buscaSigla') ->setAttrib('placeholder', 'ESTADO') ->setAttrib('maxLength', 2); } @andervilo02 Write -
andervilo02 created this gist
Mar 2, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,95 @@ <?php /** * Arquivo forms/validate/Cnpj.php */ class Validate_Cnpj extends Zend_Validate_Abstract { const CNPJ_INVALIDO = "cnpj_invalido"; protected $_messageTemplates = array ( self::CNPJ_INVALIDO => "CNPJ Inválido" ); public function isValid($cnpj) { // Garante que o CNPJ é uma string $cnpj = (string) $cnpj; $this->_setValue($cnpj); // Deixa o CNPJ com apenas números $cnpj = preg_replace( '/[^0-9]/', '', $cnpj ); // O valor original $cnpj_original = $cnpj; // Captura os primeiros 12 números do CNPJ $primeiros_numeros_cnpj = substr( $cnpj, 0, 12 ); // verificar por dígitos iguauis $regex = "/^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/"; if (preg_match($regex, $cnpj)) { $this->_error(self::CNPJ_INVALIDO); return false; } /** * Multiplicação do CNPJ * * @param string $cnpj Os digitos do CNPJ * @param int $posicoes A posição que vai iniciar a regressão * @return int O * */ if ( ! function_exists('multiplica_cnpj') ) { function multiplica_cnpj( $cnpj, $posicao = 5 ) { // Variável para o cálculo $calculo = 0; // Laço para percorrer os item do cnpj for ( $i = 0; $i < strlen( $cnpj ); $i++ ) { // Cálculo mais posição do CNPJ * a posição $calculo = $calculo + ( $cnpj[$i] * $posicao ); // Decrementa a posição a cada volta do laço $posicao--; // Se a posição for menor que 2, ela se torna 9 if ( $posicao < 2 ) { $posicao = 9; } } // Retorna o cálculo return $calculo; } // Faz o primeiro cálculo $primeiro_calculo = multiplica_cnpj( $primeiros_numeros_cnpj ); // Se o resto da divisão entre o primeiro cálculo e 11 for menor que 2, o primeiro // Dígito é zero (0), caso contrário é 11 - o resto da divisão entre o cálculo e 11 $primeiro_digito = ( $primeiro_calculo % 11 ) < 2 ? 0 : 11 - ( $primeiro_calculo % 11 ); // Concatena o primeiro dígito nos 12 primeiros números do CNPJ // Agora temos 13 números aqui $primeiros_numeros_cnpj .= $primeiro_digito; // O segundo cálculo é a mesma coisa do primeiro, porém, começa na posição 6 $segundo_calculo = multiplica_cnpj( $primeiros_numeros_cnpj, 6 ); $segundo_digito = ( $segundo_calculo % 11 ) < 2 ? 0 : 11 - ( $segundo_calculo % 11 ); // Concatena o segundo dígito ao CNPJ $cnpj = $primeiros_numeros_cnpj . $segundo_digito; // Verifica se o CNPJ gerado é idêntico ao enviado if ( $cnpj !== $cnpj_original ) { $this->_error(self::CNPJ_INVALIDO); return false; } return true; } } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,23 @@ <?php /** * Arquivo forms/validate/Estado.php */ class Validate_Estado extends Zend_Validate_Abstract { const ESTADO = "estado_invalido"; protected $_messageTemplates = array ( self::ESTADO => "Estado Inválido" ); public function isValid($value) { $siglas = ['AC','AL','AP','AM','BA','CE','DF','ES','GO','MA','MT','MS','MG','PA','PB','PR','PE','PI','RJ','RN','RS','RO','RR','SC','SP','SE','TO']; if(!in_array($value, $siglas)){ $this->_error(self::ESTADO); return false; } return true; } }