No CakePHP temos diversas validações que servem para os EUA, porém nenhuma para os padrões brasileiros. Pensando nisso, resolvi fazer um behavior para fazer este tipo de validação. Por enquanto ele só valida CPF, CNPJ, telefone e CEP.
O código está junto do projeto CakePTBR no GitHub(http://github.com/jrbasso/cake_ptbr/tree/master). Eu coloquei ele na forma de plugin, então basta copiar a pasta plugins para dentro do seu projeto (pasta app). Feito isto, ele já está instalado e já pode ser usado nas models.
Nas models, deve ser incluído o behavior e usar a validação normalmente. Exemplo:
class Usuario extends AppModel {
var $name = 'Usuario';
var $actsAs = array('CakeBr.Validacao'); // Aqui inclui o behavior do plugin CakeBr
var $validates = array(
'cpf' => array(
'rule' => 'cpf'
)
);
}
Se a regra for declarada apenas como cpf (idem exemplo acima), ele irá validar o CPF no formato XXX.XXX.XXX-XX e também fará o teste do dígito verificador (dois últimos números) para verificar se é um CPF válido. Em determinadas situações, deseja-se enviar pro banco apenas os números, sem a formatação, pra isso, coloquei um parâmetro opcional que pode ser passado para fazer este teste. Na rule, deve ser colocado:
var $validates = array(
'cpf' => array(
'rule' => array('cpf', true)
)
);
Mesmo funcionamento do CPF, porém para CNPJ. A regra de apenas números também é válida. O formato do CPNJ é considerado XX.XXX.XXX/XXXX-XX.
O CEP, por padrão, vai ser considerado nos formatos XXXXXXXX ou XXXXX-XXX. Caso queira alterar o separador, você pode definir da seguinte maneira:
var $validates = array(
'cep' => array(
'rule' => array('cep', array('', '-', '.'))
)
);
A validação do telefone se dará através das formatações:
Fonte: Imasters
Comente e interaja!