Talvez eu não tenha explicado o real problema lá em cima:
Estou conseguindo fazer a verificação se o CPF, se o CNPJ, etc são
válidos.
A questão é que eu preciso armazenar tudo na mesma tabela, PF e PJ
(CPF/CNPJ, RG/IE ficam no mesmo campo). E aqui está o problema, quando
é PJ por exemplo, tem campo que se torna obrigatório. Portanto, no
$validate tenho que usar o notEmpty. Caso contrário o campo é
opcional. Nessa diferença que encontro dificuldades, às vezes o MESMO
campo pode ser notEmpty e às vezes não. Como atribuir valores NÃO
CONSTANTES ao $validate?
Só lembrando, que a forma que eu encontrei para fazer isso, foi
inserir o $validate dentro de um método. De acordo com o tipo de
pessoa, o $validate faz a validação correta.
Resumindo um trecho desse método, utilizando apenas os campos cnpj_cpf
e ie_rg, está assim:
(...)
$cpf_cnpj = $this->data['Cliente']['cnpj_cpf'];
$uf = $this->data['Cliente']['uf'];
if($cpf_cnpj > 11){
$messageCpfCnpj = "CNPJ inválido";
$validaIE = "validarIE"; //se for PJ precisa validar a Inscrição
Estadual
}
else if($cpf_cnpj == 11){
$messageCpfCnpj = "CPF inválido";
$validaIE = "naoValida"; //função que sempre retorna true, pois
para PF, esse campo é composto pelo RG, que não necessita de validação
}
$this->validate = array('cnpj_cpf'=>array(
'validaCpfCnpj'=>array(
'rule'=>array('validaCnpjCpf','cnpj_cpf'),
'message'=>"$messageCpfCnpj"
),
'minimo'=>array(
'rule'=>array('minLength','11'),
'message'=>'CNPJ/CPF inválido.'
)
),
'ie_rg'=>array(
'minimo'=>array(
'rule'=>array('minLength','9'),
'message'=>'IE/RG inválido. Deve conter no mínimo 9
caracteres.'
),
'validaIE'=>array(
'rule'=>array("$validaIE",'ie_rg',"$uf"),//$uf contém o estado
do endereço de cadastro
'message'=>"$messageIE"
)
)
);
Eu acho que por o $validate estar dentro do método, ele apenas VALIDA
mas não SALVA
> > preg_match <
http://br2.php.net/manual/en/function.preg-match.php>) para
> > identificar se é CPF ou CNPJ, e então usar a validação de acordo.
>
> > Fiz algo parecido esses tempos, se lembrar mando um exemplo à noite.
>
> > --
> > Paulo Diovani,
> >
diovani.com / @paulodiovani <
http://twitter.com/paulodiovani> / ♣<
http://entbonsai.com>
>
> > --
> > CakePHP Tuga (cakephp-pt)
>
> > Utilizehttp://bin.cakephp.orgpara códigos
> Como falar comigo: Google Talk:
cau...@gmail.com Skype: CauanCabral MSN:
> Linkedin]<
http://www.linkedin.com/in/cauancabral>[image:
> Facebook] <
http://www.facebook.com/cauancabral>[image:
> Wordpress]<
http://cauancabral.net>[image:
> Twitter] <
http://twitter.com/cauancabral>[image:
> Orkut]<
http://www.orkut.com.br/Main#Profile?uid=7512190439488689375>