2017-02-15 14 views
0

Я пытаюсь использовать правило формата DATETIME для моего входа, как это:Laravel правило date_format не работает

H:i:s 

Моя модель правило выглядит следующим образом:

public static $rules = [ 
     ... 
     'start' => [ 
      'min:8', 
      'date_format:"H:i:s"', 
     ], 
    ]; 

И в моем контроллере я называю это нравится:

 $validator = Validator::make($request->all(), Product::$rules); 

     if($validator->fails()) 
     { 
      return Redirect::back()->withInput()->withErrors($validator); 
     } 

Если я dd($validator) я получаю следующее:

#rules: array:7 [▼ 
    ... 
    "start" => array:2 [▼ 
     0 => "min:8" 
     1 => "date_format:"H:i:s"" 
    ] 
    ] 

Я вставляю 00: h: 01 в поле ввода, но я не получил сообщение об ошибке.

+1

Что делать, если вы меняете 'date_format: "H: i: s"' to 'date_format: H: i: s'? Таким образом, вы не избегаете формата. –

+0

Все еще не работает –

ответ

0

Удалить 'мин: 8', а затем проверить снова

public static $rules = [ 
     ... 
     'start' => [ 
      'date_format:"H:i:s"', 
     ], 
    ]; 

FYI, Laravel date_format правило внутренне использовать date_parse_from_format() для проверки

Для получения дополнительной информации: https://laravel.com/docs/5.1/validation

Я только что проверил и это сработало для меня:

print_r(date_parse_from_format("H:i:s", "00:h:01")); 
+0

сделал 'print_r (date_parse_from_format (" H: i: s "," 00: h: 01 "));' return true или false? –

+0

Нет, он не будет, он вернет вам массив, и если будут ошибки, то он будет внутри этого массива –