我不确定我是否在这里做了任何事情,而且我真的找不到任何关于此的文档。好的文档建议也很好。我尝试填充 Laravel Collectives 中的选择,但我不确定如何正确设置 id 字段,因为现在它只是返回位置。 所以我从控制器传递了一个表:
$stuff_types = DB::table('companies')->where('active', '1')->pluck('name','id');
在我看来这就是:
{{Form::select('stuff_types', array_merge(array('default' => 'Please Select'), $stuff_types->all('name', 'id')), null, ['class'=>'form-control', 'id'=>"order-type"]) }}
我现在想指定显示的名称是什么以及后面的值是什么,以便我可以在 javascript 中调用它。如果我在没有 Collectives 的情况下执行此操作,它看起来像这样:
<select name="categories" id="categories" class="form-control">
<option value="-5">Pleace Select</option>
@foreach($positions as $sector)
@if ($sector->id == 2 || $sector->id == 3)
<option value="{{ $sector->id }}">{{ $sector->name }}</option>
@endif
@endforeach
</select>
有人可以给我一个提示,如何验证数组而不是逐一检查每个值:
$sector->id == 2 || $sector->id == 3
提前致谢
斯蒂芬
更新2019-08-14
在nakov的帮助下,我们可以找出问题并解决它:
选项1:
控制器
$stuff_types = DB::table('companies')->where('active', '1')->pluck('name','id');
$stuff_types->prepend('Please Select', '');
查看:
{{Form::select('stuff_types', $stuff_types, null, ['class'=>'form-control', 'id'=>"order-type"]) }}
选项2:
控制器
$stuff_types = DB::table('companies')->where('active', '1')->pluck('name','id')->toArray();
查看:
{{Form::select('stuff_types', ['' => 'Please Select'] + $stuff_types, null, ['class'=>'form-control', 'id'=>"order-type"]) }}
元素中的第二个参数应该是元素数组,因此您已经从控制器以正确的方式传递它,它应该是这样的数组:
[1 => 'Title 1', 2 => 'Title 2' ....]
所以你需要的是这个:
{{Form::select('stuff_types', array_merge(array('default' => 'Please Select'), $stuff_types), null, ['class'=>'form-control', 'id'=>"order-type"]) }}
只需删除对
all
的呼叫:)
第三个参数,目前是
null
,是你需要预先选择的值。
--编辑
在您的控制器中添加以下内容:
$stuff_types = DB::table('companies')->where('active', '1')->pluck('name','id')->toArray();
并将上面的代码用于我共享的选择。