我正在尝试在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>
我相信发生的事情是,当你调用pluck
时,你会返回一个值的数值数组(Collection?),这些数字键被用于value
属性,并且所述键的实际值被用作显示,如果你这样做了:
$cmp_types = cmpTypes::where('status' , true )->pluck('type');
$cmp_types = array_combine($cpm_types, $cmp_types);
阅读材料
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',...