Laravel:在选择框/下拉列表中使用相同的列作为选项名称及其值?

问题描述 投票:1回答:2

我正在尝试在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>
php forms eloquent html-select laravel-5.8
2个回答
3
投票

我相信发生的事情是,当你调用pluck时,你会返回一个值的数值数组(Collection?),这些数字键被用于value属性,并且所述键的实际值被用作显示,如果你这样做了:

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

阅读材料

array_combine


0
投票

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',...
© www.soinside.com 2019 - 2024. All rights reserved.