2017-01-25 4 views
0

Если use_shipping не проверено и пользователь не указал значение в shipping_note - проверка должна была пройти, но это не удалось?Laravel Validation with checkbox

<input type="hidden" name="use_shipping" value="0"> 
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}> 

Текст

<input type="text" name="shipping_note" value=""> 

В Laravel класс запроса:

public function rules() 
{ 

    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_with:use_shipping', 
    ]; 
} 
+0

Какое сообщение об ошибке он вам дал? Он сказал вам, почему это не удалось? – Styphon

+0

Сообщение об ошибке, которое я хочу сказать мне ввести 'shipping_note', когда' use_shipping' не отмечен галочкой –

ответ

4

состояния В required_with проверки:

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

Из-за вашего скрытого ввода всегда будет поле shipping_note. Так как поле присутствует, даже если флажок снят, то проверка required_with будет всегда активирована.

Скорее всего, что вы ищете, required_if проверки, в котором говорится:

required_if: anotherfield, значение, ...

Поле под проверки должны присутствовать и не пусто, если другое поле поле равно любому значение.

public function rules() 
{ 
    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_if:use_shipping,1', 
    ]; 
} 

Это должно привести к shipping_note, потребуется только тогда, когда значение use_shipping является 1, что должно произойти только тогда, когда флажок установлен.

+0

Благодарим за ответ. К сожалению, '' required_if: use_shipping, 1 ', 'не работает. По-прежнему такое же поведение, как и раньше. –

+1

@ I'll-Be-Back Вы уверены? Я просто проверил 'Validator :: make (['use_shipping' => '0', 'shipping_note' => ''], ['use_shipping' => 'boolean', 'shipping_note' => 'required_if: use_shipping, 1' ]) -> pass() ', и он возвращает' true' (проверки валидации). – patricus

+0

Извините, я протестировал на неправильной странице - он действительно работает, спасибо :) –