У меня есть форма, в которой пользователь может при желании выбрать опцию, и если пользователь не выбирает опцию, мне нужно, чтобы значение по умолчанию ‘null’ было отправлено в базу данных.
Я использую laravel 5.1, поэтому мое поле ввода выглядит следующим образом:
<div class="form-group col-lg-4">
{!! Form::label('cat1', 'CAT Tool 1', ['class' => 'control-label']) !!}
<div class="input-group">
<div class="input-group-addon">
<span class="glyphicon glyphicon-cog"></span>
</div>
{!! Form::select('cat1', $cats , null , ['class' => 'form-control']) !!}
</div>
</div>
Здесь $cats
массив является массивом CAT Tools ($cats=['SDL Trados', 'Deja Vu', 'WordFast', 'OmegaT', 'Fluency'];
). У меня есть похожие поля, в которых возвращается массив атрибутов базы данных (например, в методе создания контроллера у меня есть $languages=Language::lists('fa_name', 'id');
). Как я могу сделать это?
Я не знаю о том, чтобы представить его как null
, Если вы поместите туда пустую строку, она просто вернется в виде пустой строки, так что вам придется проверить, что она empty
и если это так, установите его на ноль.
Чтобы добавить его в массив, просто добавьте его в начало, и оно должно работать.
$cats = ['', 'SDL Trados', 'Deja Vu', 'WordFast', 'OmegaT', 'Fluency'];
Или если у вас уже есть $cats
переменная, и вам нужно изменить его …
array_unshift($cats, '');
Возможно, вам придется вводить эти массивы в ключ, потому что я считаю, что select выберет ключи как текст, а значения — как значение в элементах option.
В этом случае вы все еще хотите использовать array_unshift
и передать массив вместо строки.
array_unshift($languages, ['Optional' => '']);`
Это добавит дополнительную опцию для выбора с тестом Optional
и нет значения.
lists
метод, используемый для возврата массива, но начиная с Laravel 5.1 он возвращает коллекцию, поэтому мне нужно было преобразовать $ languages в массив следующим образом:
$languages=Language::lists('fa_name', 'id')->all();
или же
$languages=Language::lists('fa_name', 'id')->toArray();
Далее в представлении я могу использовать следующее:
{!! Form::select('from1', [null => 'Select your language'] + $languages, null , ['class' => 'form-control']) !!}
который добавит пустую опцию в поле выбора.