Check user's age with laravel validation rules -
how can check age of user upon registration? want set minimum age 13 years old. ask user's date of birth , when validate other credentials, want check in fact 13+.
an excerpt user model looks this:
$rules = [ 'name' => 'required|alpha|min:1', 'email' => 'required|email|unique:users', 'dob' => 'required|date' ];
how can check date entered 13 years ago or more?
i have seen can use before:yyy-mm-dd
rule laravel docs, so:
$rules = [ 'name' => 'required|alpha|min:1', 'email' => 'required|email|unique:users', 'dob' => 'required|date|before:2001-04-15' ];
- how calculate value?
- how use value within rules?
rmcleod answer ok, i'd suggest extracting custom rule:
validator::extend('olderthan', function($attribute, $value, $parameters) { $minage = ( ! empty($parameters)) ? (int) $parameters[0] : 13; return (new datetime)->diff(new datetime($value))->y >= $minage; // or same using carbon: // return carbon\carbon::now()->diff(new carbon\carbon($value))->y >= $minage; });
this way can use rule age like:
$rules = ['dob' => 'olderthan']; // checks 13 years default age $rules = ['dob' => 'olderthan:15']; // checks 15 years etc
Comments
Post a Comment