在 Laravel 4 中设置多个 select 对象的 selected 项

Set selected items of multiple-select object in Laravel 4

我的项目是关于商店的,属于很多部分。 创建商店时,在多 select 列表中选择(selected)部分并正确保存值。此外,在编辑信息时,用户可以正确保存更改。问题在于:在编辑表单中,multi-select 对象是清晰的(根本没有项目被 selected),而我们需要根据预先设置的选项进行 selected已保存数据,因此用户可以查看和修改它。

在控制器 I select 中这样列出:

 public function edit($id)
{    
    $data  = Shops::with('sections')->where('id', '=', $id)->get();
    $sectionslst = Sections::lists('section_name','id'); 
    return View::make('admin.shops.edit')->with('data',$data)
                    ->with('sectionslst', $sectionslst );
}

并且我以这种方式在我的视图中填充数据

{{Form::label('shop_section','الاقسام') }}
    {{ Form::select('shop_sections[]', $sectionslst, array (1, 2), array ('multiple' => 'multiple' ))}}

//I'm using array(1, 2) just to try how it works, but it doesn't, all items still un-selected  :-(

首先,如果您的列表中没有这些 ID,您显然不能使用 array(1,2) 来测试它。相反:

{{ Form::select('shop_sections[]', $sectionslst, array(13, 14), array ('multiple' => 'multiple' ))}}

现在真正的问题是 $data->sections 是一个 Eloquent 模型集合。但是 Form::select 需要一个键数组。您可以使用 lists()

来解决这个问题
$data->sections->lists('id')