Php 如何在laravel multiselect下拉列表中将选定项目标记为已选中
我正在使用多选下拉插件。在store方法期间,我可以在下拉列表中获取所选项目的所有ID。但是,在编辑方法期间,当我尝试加载具有多个值的实体时,我无法将项目标记为在下拉列表中选中 例如:Php 如何在laravel multiselect下拉列表中将选定项目标记为已选中,php,laravel,laravel-4,multi-select,Php,Laravel,Laravel 4,Multi Select,我正在使用多选下拉插件。在store方法期间,我可以在下拉列表中获取所选项目的所有ID。但是,在编辑方法期间,当我尝试加载具有多个值的实体时,我无法将项目标记为在下拉列表中选中 例如: 假设我与联系人一起工作。每个联系人可以属于许多类别。联系人和类别之间存在着归属关系。每当我添加新联系人时(如果用户选择了许多类别),我都会获取所有类别的id并将其分配给联系人。现在,当我再次尝试加载联系人时,我必须显示为此联系人选择的类别列表-这是我目前无法做到的。以下是我如何在Laravel 4中完成多重选择:
假设我与联系人一起工作。每个联系人可以属于许多类别。联系人和类别之间存在着归属关系。每当我添加新联系人时(如果用户选择了许多类别),我都会获取所有类别的id并将其分配给联系人。现在,当我再次尝试加载联系人时,我必须显示为此联系人选择的类别列表-这是我目前无法做到的。以下是我如何在Laravel 4中完成多重选择:
<?= Form::select(
'category_ids[]',
App::make('Category')->lists('name', 'id'),
$contact->categories()->select('categories.id AS id')->lists('id'),
[
'class' => 'form-control',
'multiple'
]
)?>
在创建和编辑表单时都使用此选项。在创建
操作中,
$contact->categories()
将为空,因此不会填充select,但在编辑
操作中,您将获得正确选择的值
编辑:为了像这样共享表单,您需要在create
操作中传入contact
模型的新实例,如下所示:
public function create()
{
$contact = App::make('Contact');
return View::make('contact.create', concat('contact'));
}
在您的共享表单中,$contact将始终可用,即使它尚未持久化。Travis answers确实帮了我很大的忙。因此,我认为这是正确的答案。然而,我不得不做一些更新。下面是我必须做的
@if(isset($contact))
<?= Form::select(
'category_ids[]',
Category::lists("name", "id"),
$contact->categories()->select('categories.id AS id')->lists('id'),
[
'class' => 'form-control multiselect',
'multiple'
]
)?>
@else
{{ Form::select("category_ids[]", Category::lists("name", "id"), Input::old("category_id"), array( "class" => "form-control multiselect" , "multiple" => "multiple" )) }}
@endif
@if(isset($contact))
@否则
{{Form::select(“category_id[]”,category::list(“name”,“id”),Input::old(“category_id”),array(“class”=>“Form control multiselect”,“multiple”=>“multiple”)}
@恩迪夫
我在创建和编辑操作中使用相同的表单,因此在创建表单中,它在contact->categories行上向我抛出了一个错误,这是真的,因为在create方法中contact为null。这就是支票。谢谢特拉维斯。这真的帮了我很大的忙。把你的答案作为答案。很高兴我能帮上忙,加根。只是想评论一下,说你不需要在表单中使用这个条件。只需在创建操作中将联系人模型的新实例传递到视图中。通过这种方式,设置了contact变量,您可以使用我给出的示例,而无需任何条件。我编辑了我的答案来解释它。@TravisVignon。。有道理:)
public function create()
{
$contact = App::make('Contact');
return View::make('contact.create', concat('contact'));
}
@if(isset($contact))
<?= Form::select(
'category_ids[]',
Category::lists("name", "id"),
$contact->categories()->select('categories.id AS id')->lists('id'),
[
'class' => 'form-control multiselect',
'multiple'
]
)?>
@else
{{ Form::select("category_ids[]", Category::lists("name", "id"), Input::old("category_id"), array( "class" => "form-control multiselect" , "multiple" => "multiple" )) }}
@endif