Как добавить пустую опцию по умолчанию в поле ввода select с помощью laravelcollective?

У меня есть форма, в которой пользователь может при желании выбрать опцию, и если пользователь не выбирает опцию, мне нужно, чтобы значение по умолчанию ‘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');). Как я могу сделать это?

0

Решение

Я не знаю о том, чтобы представить его как null, Если вы поместите туда пустую строку, она просто вернется в виде пустой строки, так что вам придется проверить, что она empty и если это так, установите его на ноль.

Чтобы добавить его в массив, просто добавьте его в начало, и оно должно работать.

$cats = ['', 'SDL Trados', 'Deja Vu', 'WordFast', 'OmegaT', 'Fluency'];

Или если у вас уже есть $cats переменная, и вам нужно изменить его …

array_unshift($cats, '');

Возможно, вам придется вводить эти массивы в ключ, потому что я считаю, что select выберет ключи как текст, а значения — как значение в элементах option.

В этом случае вы все еще хотите использовать array_unshift и передать массив вместо строки.

array_unshift($languages, ['Optional' => '']);`

Это добавит дополнительную опцию для выбора с тестом Optional и нет значения.

2

Другие решения

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']) !!}

который добавит пустую опцию в поле выбора.

2

По вопросам рекламы [email protected]