我在结构的数据库表中有一个项目列表: id,名字。
我需要填充一个选择框,其中包含按名称排序的项目以及"全部" id = 0的元素作为第一个元素。错误的是该元素根本不会出现在列表框中。
控制器方法:
public function getItems(){
$items = Item::orderBy('name', 'ASC')->lists('name', 'id');
$items_all = array(0 => 'All');
array_merge($items_all, $items);
return View::make('items')->with('items', $items);
}
和观点:
{{ Form::select('item_id', $items, Input::Get('item_id'), array('class'=>'form-control')) }}
答案 0 :(得分:1)
array_merge
返回新数组,因此您必须将返回值分配给$items
:
$items = array_merge($items_all, $items);
如果您想要:
,可以将其归结为此语法$items = array_merge(['0' => 'All'], $items);
要预先确定数组项目的订单,您可以使用此功能:
$items = $items_all + $items;
答案 1 :(得分:0)
更新后
array_merge($ items_all,$ items)
到
$ items = array_merge($ items_all,$ items)
显示所有选择框元素,包括'All',但是array_merge重新编号元素,所以我使用了:
$ items = $ items_all + $ items;
正如@lukasgeiter同时提出的那样,所以我选择了他的答案作为最终答案。