未定义变量:请求,laravel 日期验证错误
Undefined variable: request, error on laravel date validation
在我的 laravel 应用程序中,我有一个用户注册表格
我有一个用户生日输入框。
我正在通过我的控制器验证用户输入。
生日用户年龄必须在18-70岁之间。
为了我的用户生日,我的前端有 d/m/Y
格式,但我在保存之前从我的控制器将其转换为 Y-m-d
格式。
if(!empty($request->date_of_birth)){
$date = str_replace('/', '-', $request->date_of_birth);
$new_bday=date("Y-m-d", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
}
现在的问题是,每次用户输入无效日期时 (12/11/2021)
它都会验证并以错误的格式显示旧日期(之前选择的)(2021-11-12)
为了解决这个问题,我在我的控制器中将我的出生日期验证更改为以下
'date_of_birth'=>['required','bail','date_format:Y-m-d',function ($attribute, $value, $fail) {
$age=Carbon::createFromFormat('Y-m-d', $value)->diff(Carbon::now())->y;
if($age<18||$age>70){
$date = str_replace('-', '/', $value);
$new_bday=date("d/m/Y", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
$fail('Âge invalide. l\'âge devrait être 18-70');
}
},]
但这一直给我一个错误说 Undefined variable: request
尝试像这样访问请求 \request()
而不是 $request
。
\request()
是一个帮助函数,returns 相同的请求对象,可以从您的应用程序的任何地方调用。
验证和提交日期有时也会导致一些问题。为此,我建议您考虑使用一些第三方工具,例如日期时间选择器或平面选择器。它可以更加用户友好,并且您可以确保从客户端以正确的格式输入日期。
参见:
在我的 laravel 应用程序中,我有一个用户注册表格
我有一个用户生日输入框。
我正在通过我的控制器验证用户输入。
生日用户年龄必须在18-70岁之间。
为了我的用户生日,我的前端有 d/m/Y
格式,但我在保存之前从我的控制器将其转换为 Y-m-d
格式。
if(!empty($request->date_of_birth)){
$date = str_replace('/', '-', $request->date_of_birth);
$new_bday=date("Y-m-d", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
}
现在的问题是,每次用户输入无效日期时 (12/11/2021)
它都会验证并以错误的格式显示旧日期(之前选择的)(2021-11-12)
为了解决这个问题,我在我的控制器中将我的出生日期验证更改为以下
'date_of_birth'=>['required','bail','date_format:Y-m-d',function ($attribute, $value, $fail) {
$age=Carbon::createFromFormat('Y-m-d', $value)->diff(Carbon::now())->y;
if($age<18||$age>70){
$date = str_replace('-', '/', $value);
$new_bday=date("d/m/Y", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
$fail('Âge invalide. l\'âge devrait être 18-70');
}
},]
但这一直给我一个错误说 Undefined variable: request
尝试像这样访问请求 \request()
而不是 $request
。
\request()
是一个帮助函数,returns 相同的请求对象,可以从您的应用程序的任何地方调用。
验证和提交日期有时也会导致一些问题。为此,我建议您考虑使用一些第三方工具,例如日期时间选择器或平面选择器。它可以更加用户友好,并且您可以确保从客户端以正确的格式输入日期。
参见: