#php #forms #eloquent #html-select #laravel-5.8
#php #формы #красноречивый #html-выбрать #laravel-5.8
Вопрос:
Я пытаюсь создать форму с полем выбора в Laravel.
Вид
{{ Form::select('cmp_type', $cmp_types, null, $attributes = ['class' => 'form-control']) }}
Контроллер
public function showAddCompany()
{
$cmp_types = cmpTypes::where('status', true)->pluck('type');
return view('addCompany', compact('cmp_types'));
}
Это генерирует поле выбора.
<select class="form-control" id="cmp_type" name="cmp_type">
<option value="0">public</option>
<option value="1">pvt Ltd</option>
<option value="2">LLP</option>
<option value="3">NPO</option>
<option value="4">partnership</option>
<option value="5">proprietorship</option>
<option value="6">one person</option>
</select>
Что я могу сделать, чтобы получить поле выбора как?:
<select class="form-control" id="cmp_type" name="cmp_type">
<option value="public">public</option>
<option value="pvt Ltd">pvt Ltd</option>
<option value="LLP">LLP</option>
<option value="NPO">NPO</option>
<option value="partnership">partnership</option>
<option value="proprietorship">proprietorship</option>
<option value="one person">one person</option>
</select>
Комментарии:
1. Что это за
type
столбец? Какого рода данные там?
Ответ №1:
Я полагаю, что происходит то, что при вызове pluck
вам возвращается числовой массив (коллекция?) для value
свойства используются значения и эти цифровые клавиши, а фактическое значение указанного ключа используется в качестве отображения, что, если бы вы сделали:
$cmp_types = cmpTypes::where('status' , true )->pluck('type');
$cmp_types = array_combine($cpm_types, $cmp_types);
Материал для чтения
Ответ №2:
мне помог array_combine().
решение таково:
public function showAddCompany()
{
$cmp_types_obj = cmpTypes::where('status' , true )->pluck('type');
$cmp_types = json_decode($cmp_types_obj);
$cmp_types = array_combine($cmp_types, $cmp_types);
return view('addCompany', compact('cmp_types'));
}
мой запрос возвращает объект, поэтому я сначала преобразовал его в массив, а затем объединил его с самим собой, чтобы получить ассоциированный массив в виде
['public']=>'public,['private']=>'private',...
Комментарии:
1. Вы должны были принять другой ответ, вместо того, чтобы писать свой собственный на основе этого.