Este post é baseado no post Three new validation rules, de Daniel Hofstetter.
Recentemente foram incluídas novas regras de validação. Com isso, você pode usar três novas regras de validação nos seus models: boolean, inList e time.
boolean é auto-explicativa: testa se o valor é booleano (0 ou 1, false ou true, ‘0′ ou ‘1′).
1 | var $validate = array('is_enabled' => array('rule' => array('boolean'))); |
inList é para verificar se um valor está dentro de uma lista.
1 | var $validate = array('cor' => array('rule' => array('inList', array('vermelho', 'verde', 'azul')))); |
time determina se o valor informado está num formato de hora válida.
1 | var $validate = array('hora_inicial' => array('rule' => array('time'))); |
Para complementar, criei o ticket 4727 para que coloquem nas regras de validação os formatos brasileiros. São três formatos específicos: postal code (nosso CEP), phone (formato de telefone. Coloquei com código internacional, código de área e telefone, além de 0300, 0800 e 0900) e ssn (não é muito igual, mas coloquei a regra do CPF, que é o similar aqui no Brasil). Quando sair o resultado eu informo a vocês.
Amigo,
Li o seu post e achei bem bacana a iniciativa de abrir o ticket informando as regras de validação dos formatos brasileiros. Mas pelo que vi, o CPF é apenas uma expressão regular. Não deveria ser feito todo o cálculo para verificar se o CPF é realmente válido? Teria como os desenvolvedores do CakePHP implementarem isso?
Abraço
Comentário por Vinicius Mendes — 29 agosto 2008 @ 5:58 pm
Fala Juan,
Muito bom! Só um detalhe, eu li o ticket que você abriu e tem lá:
— quote >> Olhe os colchetes —
The following regex validates postal codes for Brazil:
[aqui uma regex que eu acredito validar os telefones no Brazil]
The following regex validates postal codes for Brazil:
[aqui uma regex que eu acredito validar o CEP do Brazil]
[...]
————————————
Seria bom corrigir para não gerar confusão na cabeça dos desenvolvedores.
Abração e parabéns
Comentário por Josenivaldo Benito — 13 março 2009 @ 10:25 pm
Opa, bem observado! Obrigado pela correção.
Abraços.
Comentário por Juan Basso — 14 março 2009 @ 6:41 pm
Gostaria de saber como faço para validar campos cpf de forma simples, sem precisar copiar 500 arquivos para o projeto, depois sair adicionando variaveis ao longo do projeto para ver ele funcionando.
Poderia informar algo simples para resolver?
Meu e-mail Yahoo: maurothiagobr@yahoo.com.br
Meu e-mail Gmail: maurothiago@gmail.com
Creio que já nos falamos em outros posts, até no forum do Cake no google.
Bom, desde já obrigado pela força!
Comentário por Thiago — 10 abril 2009 @ 2:31 pm
Thiago,
Você pode criar uma regra especial de validação no seu model, você pode dar uma olhada na documentação do Cake: http://book.cakephp.org/pt/view/150/Regras-de-Valida%C3%A7%C3%A3o-Customizadas
Eu criei um plugin que contém a validação de CPF, CNPJ, Telefone e CEP como um behavior. Ainda não tem muita documentação, mas se quiser tentar utilizar, o código está em http://github.com/jrbasso/cake_ptbr/tree/master.
Qualquer sugestão é bem vinda. Abraços.
Comentário por Juan Basso — 12 abril 2009 @ 10:45 pm
Olá Juan,
gostaria de saber como faço para declara um behavior dentro do model ou controller para funcionar a validação. Agradeço pela ajuda!
Comentário por Thiago — 13 abril 2009 @ 9:43 am