使用 laravel 验证器验证自定义日期格式
在我的应用中,用户从日期选取器中选择日期,然后日期以与用户区域设置相对应的格式显示在输入中。
提交表格时,我想验证相应的日期,但是,验证者不知道提交日期的日期格式。
我的问题是,在将日期传递给验证器之前,我是否应该将日期变异为Y-m-d,或者有没有办法告诉验证器要验证的正确格式?
在我的应用中,用户从日期选取器中选择日期,然后日期以与用户区域设置相对应的格式显示在输入中。
提交表格时,我想验证相应的日期,但是,验证者不知道提交日期的日期格式。
我的问题是,在将日期传递给验证器之前,我是否应该将日期变异为Y-m-d,或者有没有办法告诉验证器要验证的正确格式?
更简单的选择是使用Laravel规则(https://laravel.com/docs/5.5/validation#rule-date-format)。它是Laravel中的内置功能,无需自定义规则(在Laravel 5.0 +中可用)。date_format:format
您可以执行以下操作:
$rule['date'] = 'required|date_format:d/m/Y';
或
$rule['date'] = 'required|date_format:Y-m-d';
您可以在AppServiceProvider
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('new-format', function($attribute, $value, $formats) {
foreach($formats as $format) {
$parsed = date_parse_from_format($format, $value);
// validation success
if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
return true;
}
}
// validation failed
return false;
});
}
}
现在,您可以使用自定义验证规则:
'your-date' => 'new-format:"Y-m-d H:i:s.u","Y-m-d"'