2016-11-22 3 views
0

Как заполнить этот флажок, если запрос формы проверки не выполнен, но если пользователь не отправил форму, то используйте значение по умолчанию из базы данных?Laravel Blade - Обновить, если проверка не выполнена?

Предположим, у нас есть поле ввода имени и флажок.

Input Name

<input type="text" name="name" value="{{ old('name', $delivery->name) }}"> 

Checkbox:

<input type="checkbox" name="use_shipping" @if(old('use_shipping', $delivery->use_shipping) == "1") checked="checked" @endif value="1"> 

поле Name Input правильно работает, чтобы заселить значение через базу данных или заселить значение, если запрос проверки не удалось.

Флажок не повторяется, если проверка не выполнена. Как это исправить?

Например, если я не указал имя (поле ввода), и я снял флажок use_shipping, он должен обновить флажок после отправки формы (проверка не выполнена).

+0

Что такое дополнительная двойная кавычка (") после атрибута value? – Michel

+0

@Michel Oop. Я отредактировал вопрос. Проблема все еще существует. –

ответ

2

Это происходит потому, что браузер не добавляет не- установленный флажок в данных сообщения, и поэтому значение $delivery->use_shipping используется при повторной заполнении формы.

Вы можете добавить скрытый вход со значением «по умолчанию» из use_shipping исправить это поведение:

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

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

-1

Попробуйте это:

<input type="checkbox" name="use_shipping" @if(old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) checked @endif value="{{ old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) }}"> 

* Использование доставки должно быть логическое значение

+0

Я не думаю, что это сработает -' checked' не принимает значение –

+0

Эта привычная работа. Мы по умолчанию проверяем или не проверяем через '$ delivery-> use_shipping', если форма не была отправлена. Если форма была отправлена ​​и подтверждена с ошибкой, ее необходимо переустановить через' old() ' –

+0

Ooooh, я обновил свой ответ, надеюсь, что это поможет. –

0

Это должно сделать трюк:

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

+0

То же самое. Он не обновляет этот флажок, если проверка не прошла. Репликация из базы данных, а не« старое »значение, если проверка не выполнена. –