使用 laravel 验证器验证自定义日期格式

2022-08-30 12:11:34

在我的应用中,用户从日期选取器中选择日期,然后日期以与用户区域设置相对应的格式显示在输入中。

提交表格时,我想验证相应的日期,但是,验证者不知道提交日期的日期格式。

我的问题是,在将日期传递给验证器之前,我是否应该将日期变异为Y-m-d,或者有没有办法告诉验证器要验证的正确格式?


答案 1

更简单的选择是使用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';

答案 2

Laravel 自定义验证规则

您可以在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"'


推荐