我正在建立一种形式,用户必须年龄在18岁以上。我尝试了一些方法,但没有起作用。
在我的控制器中:
$this->validate($request,[
'birthday' => 'required|date|before:-18 years',
]);
在request.php中:(通过Internet搜索)
abstract class Request extends FormRequest
{
public function messages()
{
return [
'birthday.before' => 'You must be 18 years old or above',
];
}
}
实际上,我并不清楚您的问题。如果要在验证之前进行自定义消息,请转到Resources/lang/en/vary.php并在
上更改它'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
希望它有帮助!
您可以从日期开始计算年龄,然后将其验证为数字。
或者您可以验证一个日期,该日期是现在的18年
$dt = new CarbonCarbon();
$before = $dt->subYears(18)->format('Y-m-d');
$rules = [
'dob' => 'required|date|before:' . $before
];
或者您可以扩展验证并像以下答案一样进行自定义:使用Laravel验证规则检查用户的年龄
hi以使您的验证错误存储在变量中然后只需使用$validator->errors()
即可获取其错误
$validator = Model::validate($request,[
'birthday' => 'required|date|before:-18 years',
]);
$errors = $validator->errors();
echo "You error in birthday: ".$errors->get('birthday')[0];