Neste post irei mostrar como validar campos de formulários com valores que contenham uma data e hora no framework Laravel, por exemplo, “04/03/2012 13:00:00″.
O PHP leva em conta sua definição da variável date.timezone do arquivo php.ini ou então o valor da definição do método date_default_timezone_set() para as funções de data do sistema, no caso do Brasil ficaria assim:
date_default_timezone_set('America/Sao_Paulo');
Primeiro devemos adicionar um método a classe “Validator” do Laravel em nome_do_seu_projeto/laravel/validator.php (recomendo adicionar após o método validate_required).
// nao alterar o nome do metodo pois senao nao // sera encontrado pelo validator do laravel. protected function validate_datetime($attribute, $value) { if ( ! strtotime($value) ) return false; return true; }
Desta forma podemos dentro do model do Laravel adicionar a validação da seguinte maneira.
$rules = array( 'start_at' => array('required', 'datetime'), 'end_at' => array('required', 'datetime'), ); // mensagens personalizadas para os erros (opcional) $messages = array( 'start_at_required' => 'O campo "Data início" é obrigatório.', 'start_at_datetime' => 'A data informada em "Data início" é inválida.', 'end_at_required' => 'O campo "Data fim" é obrigatório.', 'end_at_datetime' => 'A data informada em "Data fim" é inválida.', ); $validator = Validator::make( Input::get(), $rules, $messages ); if ( $validator->valid() ) { // salvar dados da model! }
Ainda é possível criar outros métodos de validação por exemplo para validar um CPF, telefone, etc.
Até mais!!