jac*_*bdo 10 php laravel laravel-5
在我的应用程序中,用户从日期选择器中选择日期,然后日期将以对应用户区域设置的格式显示在输入中.
提交表单时,我想验证相应的日期,但验证者不知道提交日期的日期格式.
我的问题是我是否应该在将日期传递给验证器之前将日期变为Ymd,还是有一种方法可以告诉Validator正确的格式进行验证?
Nir*_*hah 27
更简单的选择是使用Laravel date_format:format
规则(https://laravel.com/docs/5.5/validation#rule-date-format).它是Laravel中的内置函数,无需自定义规则(Laravel 5.0+中提供).
你可以做:
$rule['date'] = 'required|date_format:d/m/Y';
Run Code Online (Sandbox Code Playgroud)
要么
$rule['date'] = 'required|date_format:Y-m-d';
Run Code Online (Sandbox Code Playgroud)
您可以在您的 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;
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用自定义验证规则:
'your-date' => 'new-format:"Y-m-d H:i:s.u","Y-m-d"'