Проверка пользовательского формата даты с помощью валидатора laravel - PullRequest
0 голосов
/ 11 мая 2018

В моем приложении пользователь выбирает дату из средства выбора даты, и затем дата отображается во входных данных в формате, соответствующем языку пользователя.

Когда форма отправлена, я хотел бы проверить соответствующую дату, однако, валидатор не знает формат даты, в которой дата была отправлена.

Мой вопрос заключается в том, должен ли я преобразовать дату в Y-m-d, прежде чем она будет передана в валидатор, или есть ли способ сообщить Валидатору правильный формат для проверки?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Более простой вариант - использовать Laravel date_format:format rule (https://laravel.com/docs/5.5/validation#rule-date-format). Это встроенная функция в Laravel без необходимости настраиваемого правила (доступно в Laravel 5.0 +).

Вы можете сделать:

$rule['date'] = 'required|date_format:d/m/Y';

или

$rule['date'] = 'required|date_format:Y-m-d';
0 голосов
/ 11 мая 2018

Пользовательские правила проверки 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"'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...