Проверка формата даты Laravel дд / мм / гггг - PullRequest
0 голосов
/ 18 мая 2018

Простая вещь, пожалуйста, помогите мне.Я хочу проверить формат даты (дд / мм / гггг). Если мой ввод 05/02/1991 или 5/2/1991, он должен вернуть 'true' , но

 public function rules()
  {
    return [
        'date_of_birth'         => 'required|date_format:"d/m/Y"'
    ];
  }

в приведенном выше правиле возвращает true только для 05/02/1991 .Мне нужно сопоставить их обоих.

Ответы [ 2 ]

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

Вы можете комбинировать date и regex для обработки, поскольку date_format может обрабатывать только один формат:

<?php

public function rules()
{
    return [
        'date_of_birth' => 'required|date|regex:/\d{1,2}\/\d{1,2}\/\d{4}/'
    ];
}
0 голосов
/ 23 мая 2018

Валидатор date принимает в качестве параметра только один формат даты.Чтобы иметь возможность использовать несколько форматов, вам необходимо создать собственное правило проверки.И это довольно просто.Чтобы иметь возможность использовать несколько форматов даты в одном валидаторе Вы можете определить многоформатную валидацию даты в AppServiceProvider с помощью следующего кода:

class AppServiceProvider extends ServiceProvider  
{
 public function boot()
 {
    Validator::extend('date_multi_format', function($attribute, $value, $formats) {
        // iterate through all formats
        foreach($formats as $format) {

            // parse date with current format
            $parsed = date_parse_from_format($format, $value);

            // if value matches given format return true=validation succeeded 
            if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
              return true;
            }
          }

     // value did not match any of the provided formats, so return false=validation failed
     return false;
    });
  }
}

Позднее вы можете использовать это новое правило валидации, например:

'date' => 'date_multi_format:"Y-m-d H:i:s.u","Y-m-d"' //or any other format

Надеюсь, это поможет

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