Laravel: использовать тот же столбец, что и имя опции и его значение в поле выбора / раскрывающемся списке? - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь создать форму с полем выбора в Laravel.

View

{{ 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>

Ответы [ 2 ]

3 голосов
/ 22 марта 2019

Я верю, что при вызове pluck вам возвращается числовой массив (Collection?) Значений, и эти числовые ключи используются для свойства value и фактического значения указанногоКлавиша используется в качестве дисплея, что если вы сделали:

$cmp_types = cmpTypes::where('status' , true )->pluck('type');
$cmp_types = array_combine($cpm_types, $cmp_types);

Материал для чтения

array_combine

0 голосов
/ 22 марта 2019

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',...
...