2015-09-01 7 views
0

У меня есть форма, в которой пользователь может выбрать опцию, и если пользователь не выбирает вариант, мне нужно, чтобы значение по умолчанию «null» было отправлено в базу данных. Я использую Laravel 5.1 так что мое поле ввода выглядит следующим образом:Как добавить пустую опцию по умолчанию в поле ввода ввода с использованием laravelcollective?

  <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

Показать код php, который вы используете, чтобы вставить эти данные в базу данных. –

+0

@ arthur-samarcos Есть ли необходимость показать php-код? Я все еще работаю над самой формой! –

ответ

1

lists метод возвращает массив, но по состоянию на Laravel 5.1 возвращает коллекцию, поэтому мне нужно, чтобы преобразовать $ языков в массив, как это:

$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

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

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

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

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

array_unshift($cats, ''); 

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

В этом случае вам нужно будет использовать array_unshift и передать в массив вместо строки.

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

Это добавит дополнительный параметр к выбрать с помощью теста Optional и никакой ценности.

+0

Спасибо. Что делать, если этот массив возвращается из таблицы базы данных? –

+1

Вместо 'get()' вы хотите использовать 'lists (value, key)', который вернет массив в соответствующем формате, который будет использоваться для ваших полей выбора, где value - имя столбца базы данных, в котором хранятся значения (вероятно, id), а ключ будет столбцом, который вы бы захватили для текста опции, например, имени или описания. Например, 'lists ('id', 'name')' – user3158900

+0

Как вы можете видеть в отредактированной версии моего вопроса, я делаю то же самое –

 Смежные вопросы

  • Нет связанных вопросов^_^