Validação de Datas no CodeIgniter

Vou mostrar aqui como validar datas CodeIgniter sem utilizar callbacks para manter um reaproveitamento melhor do código e evitar repetições. A primeira coisa que você precisa fazer é criar na pasta libraries da sua aplicação um arquivo chamado "MY_Form_validation.php" o conteúdo deste arquivo segue abaixo:

[php] <?php defined('BASEPATH') OR exit('No direct script access allowed'); /** * Classe MY_Form_validation. * * Esta classe estende a biblioteca de validação nativa do CodeIgniter. * * @author Carlos Eduardo da Silva * @package libraries * @link https://blog.tetranet.com.br */ class MY_Form_validation extends CI_Form_validation { public function __construct() { parent::__construct(); } /** * Verifica se a data informada está na estrutura correta do calendário * gregoriano. * * @param String $date Uma string contendo a data no formato dd/mm/yyyy * @return boolean */ public function valid_date($date) { if ( ereg("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $date) ) { $arr = split("/",$date); $dd = $arr[0]; $mm = $arr[1]; $yyyy = $arr[2]; return ( checkdate($mm, $dd, $yyyy) ); } else { return FALSE; } } } #EOF [/php]

Agora você precisa editar o arquivo "form_validation_lang.php" que está na pasta languages da sua aplicação e adicionar a seguinte linha:

[php] $lang['valid_date'] = 'O campo %s não está em formato válido de acordo com o calendário gregoriano.'; [/php]

Finalmente para utilizar no seu Controller é só seguir o exemplo abaixo:

[php] $this->form_validation->set_rules('usr_dt_nascimento', 'Data de Nascimento', 'required|valid_date'); [/php]

Pronto e sem utilizar callback desta forma você pode utilizar a validação de datas em qualquer controller que você quiser evitando repetição de código em suas classes. A minha proposta de validação de datas é bem genérica e funciona mas se você quiser mudar ou melhorar sinta-se a vontade.