Hi iam developing an application using laravel is there any way to make an input date field greater than or equal to another date field using validation.
I know that i can achieve this through jquery and i have already got that working, but i want to know whether is this achievable through laravel validation since laravel has got some predefined validations.
For Example
protected $validationRules = array
(
'a' => 'date',
'b' => 'date|(some validation so that the b value is greater than or equal to that of 'a')'
);
EDIT
If there is any other approach to solve the problem using laravel concept please tell me
I tried
Validator::extend('val_date', function ($attribute,$value,$parameters) {
return preg_match("between [start date] and DateAdd("d", 1, [end date])",$value);
});
Thanks in advance
I had the same problem. before
and after
does not work when dates could be the same. Here is my short solution:
NOTE: Laravel 5.3.25 and later have new built in rules: before_or_equal
and after_or_equal
// 5.1 or newer
Validator::extend('before_or_equal', function($attribute, $value, $parameters, $validator) {
return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
});
// 5.0 & 4.2
Validator::extend('before_or_equal', function($attribute, $value, $parameters) {
return strtotime(Input::get($parameters[0])) >= strtotime($value);
});
$rules = array(
'start'=>'required|date|before_or_equal:stop',
'stop'=>'required|date',
);
Emil Aspman's answer is correct, but doesn't work for Laravel 5.2. this solution works for Laravel 5.2:
Validator::extend('before_equal', function($attribute, $value, $parameters, $validator) {
return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
});
The proper solution would be if you extended the Validator with your own rule. A simple example from the docs:
Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});
Read more here
Yes, you can use after:date
or before:date
like this:
protected $rules = array(
'date' => 'after:'.$yourDate
);
or alternatively
protected $rules = array(
'date' => 'before:'.$yourDate
);
It will do exactly what you described. Also check out the official documentation.
You can also specify rules of your own using custom validation rules.