Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Validação de Data Bom Dia!! Gostaria de saber se existe alguma forma para validar uma data para maior de idade. Grato....
PP
Validação de Data  
Bom Dia!!

Gostaria de saber se existe alguma forma para validar uma data para maior de idade.

Grato.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (6)


MG

Pablo

Você quer validar se uma determinada data de nascimento é maior que 18 anos?

Se for isso, você deve criar seu próprio Validator e ao sair do campo "data de nascimento", vc chama este método para validar.
IF

Pablo, complementando a idéia do Marcelo, crie um novo arquivo, salve com o nome de TDateValidator18.class.php na pasta app/lib/validator. Depois copie e cole o código abaixo nesse novo arquivo:

  1. <?php
  2. class TDateValidator18 extends TFieldValidator
  3. {
  4.     public function validate($label$value$parameters NULL)
  5.     {
  6.         $data1 = new DateTime(TDate::date2us($value)); //Data digitada
  7.         $data2 = new DateTime(); //Data Atual
  8.   
  9.         if ($data1->diff$data2 )->y<18)
  10.         {
  11.             throw new Exception("Sua idade é menor que 18 anos");
  12.         }
  13.     }
  14. }
  15. ?>


Na sua classe do formulário, adicione o validator criado:

  1. <?php
  2.     $data_nascimento->addValidation('Data Nascimento', new TDateValidator18); 
  3. ?>


Faça um teste e dê um feedback.
PP

Muito obrigado pela ajuda Ivan

realizei as alterações mas não funcionou,

esta retornando a seguinte menssagem: DateTime::__construct(): Failed to parse time string (4-19-3--19) at position 0 (4): Unexpected character.
MG

Pablo
No método criado dá um var_dump no argumeno $value para saber se está vindo a data correta!
Outra coisa, vc está usando qual versão do interpretador PHP?
PP

Ivan esta enviando o seguinte formato de data yyyy-mm-dd
IF

Olá Pablo, então altere a linha 7 da classe TDateValidator18 para:

  1. <?php
  2.      $data1 = new DateTime($value); //Data digitada   
  3. ?>