Codeigniter - Date Format - Form Validation


Answer :

You can take use of CodeIgniters callback functions by creating a callback_date_valid() function that check if the date is valid.

And to check if it is valid, you could use PHP's checkdate function

array(   'field' => 'reg[dob]',   'label' => 'DOB',   'rules' => 'required|date_valid' )  function callback_date_valid($date){     $day = (int) substr($date, 0, 2);     $month = (int) substr($date, 3, 2);     $year = (int) substr($date, 6, 4);     return checkdate($month, $day, $year); } 

I have a pretty clean solution for this. You can extend codeigniters form validation library.

Do this by putting a MY_Form_validation.php file in your application/libraries folder. This file should look like this:

class MY_Form_validation extends CI_Form_validation {      public function __construct($rules = array()) {         parent::__construct($rules);     }       public function valid_date($date) {         $d = DateTime::createFromFormat('Y-m-d', $date);         return $d && $d->format('Y-m-d') === $date;     } } 

To add the error message, you go to your application/language/ folder and open the form_validation_lang.php file. Add an entry to the $lang array at the end of the file, like so:

$lang['form_validation_valid_date'] = 'The field {field} is not a valid date'; 

Note that the key here must be the same as the function name (valid_date).

Then in your controller you use this as any other form validation function like for example 'required'

$this->form_validation->set_rules('date','Date','trim|required|valid_date'); 

you can do it with regex

$this->form_validation->set_rules('reg[dob]', 'Date of birth', 'regex_match[(0[1-9]|1[0-9]|2[0-9]|3(0|1))-(0[1-9]|1[0-2])-\d{4}]');  

Comments

Popular posts from this blog

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?