segunda-feira, 28 de maio de 2012

Codeigniter - Validando Datas e Horas em formulários

De volta do submundo dos sumidos...

Eu vou mostrar aqui duas funções para validar Datas e Horas em formulários utilizando o Codeigniter.
Essas funções devem ser inseridas no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"

Segue as funções:

     /**
      * Verifica se a data informada é valida, formato padrão dd/mm/yyyy
      * caso precise validar em outros formatos adicione nessa função
      * ex: mm/yyyy, mm/yy, etc
      * @param     string
      * @return     bool
      */
     function valid_date($date, $format = 'dd/mm/yyyy')
     {

         $dateArray = explode("/", $date); // slice the date to get the day, month and year separately

         $d = 0;
         $m = 0;
         $y = 0;
         if (sizeof($dateArray) == 3) {
             if (is_numeric($dateArray[0]))
                 $d = $dateArray[0];
             if (is_numeric($dateArray[1]))
                 $m = $dateArray[1];
             if (is_numeric($dateArray[2]))
                 $y = $dateArray[2];
         }

         return checkdate($m, $d, $y) == 1;
     }

     // ---
  
  // --------------------------------------------------------------------

     /**
      * Verifica se a hora informada é valida, formato padrão HH:ii
      * caso precise validar em outros formatos adicione nessa função
      * 
      * @param     string
      * @return     bool
      */
     function valid_hour($hour)
     {
   if(preg_match("/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/", $hour)){
   return TRUE;
  }else{
   return FALSE;
  }

     }

     // ---

Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários.

//---
$lang['valid_date'] = "O campo %s nao e uma data (dd/mm/yyyy) valida.";
$lang['valid_hour'] = "O campo %s nao e uma hora (hh/mm) valida.";

/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */


Para chamar a validação do formulário em um controller, utilize e seguinte linha:
//----
$this->form_validation->set_rules('data', 'Data', 'required|valid_date');
//---


Duvidas?? Deixe um comentário...

4 comentários:

  1. Muito Obrigado, ajudou bastante aqui. vlw

    ResponderExcluir
  2. estava procurando por isso .. obrigado

    ResponderExcluir
  3. a função (valid_date) e simples verifica apenas se os campo são numéricos isso se faz logo na (view) com javascript uma biblioteca como (data-mask) ajuda nisso alem de deixa o codigo bonito e formatado na view fazer tudo logo de cara ate a validação do meses com 31 dias

    ResponderExcluir