【问题标题】:How to load items in a multi select dropdown for update - Laravel如何在多选下拉列表中加载项目以进行更新 - Laravel
【发布时间】:2019-08-29 12:28:45
【问题描述】:

使用 Laravel,我创建了一个可更新的表单。这些字段之一是多选下拉菜单。此字段应显示链接到给定项目的所有位置。所以用户可以看到他选择了哪个位置以及他是否想要更新。但就在这一刻,有注被选中。您将在下面找到代码。

ProjectsController.php

控制器将数据发送到刀片模板,如下所示:

public function edit(Project $project)
    {
       $locations = Location::where('project_id', $project->id)->get();
       return view('projects.edit', [
         'project'           => $project,
         'location'          => $locations,
         'edit'              => true
       ]);

edit.blade.php

<select multiple class="form-control" name="locations[]">
    <option {{old('location',$project->location) == "Room A1" ? 'selected' : ''}}  value="Room A1">Room A1</option>
    <option {{old('location',$project->location) == "Room C1" ? 'selected' : ''}}  value="Room C1">Room C1</option>
    <option {{old('location',$project->location) == "Room D2" ? 'selected' : ''}}  value="Room D2">Room D2</option>
    <option {{old('location',$project->location) == "Room A3" ? 'selected' : ''}}  value="Room A3">Room A3</option>
    <option {{old('location',$project->location) == "Room G3" ? 'selected' : ''}}  value="Room G3">Room G3</option>
</select>

此字段通常应显示所有选定的值。然而,事实并非如此。 例如:对于 id 为 1 的项目,应在下拉菜单中选择 Room A1 和 Room D2。

该代码适用于单选下拉菜单,但不适用于多选下拉菜单。我不太明白为什么。 你能在路上帮我吗?谢谢。

应该在这个多选下拉列表中显示的数据存储在数据库中。在此表中显示:

位置表

+----+------------+----------+--+
| id | project_id | location |  |
+----+------------+----------+--+
|  1 |          1 | Room A1  |  |
|  2 |          1 | Room D2  |  |
|  3 |          2 | Room A1  |  |
+----+------------+----------+--+

【问题讨论】:

  • $project-&gt;location 是单个变量,不能等于多个不同的字符串。是数组吗?
  • 位置是一个数组。

标签: php laravel dropdown updates multi-select


【解决方案1】:
$locations = Location::where('project_id', $project->id)->get();

返回一个Illuminate\Support\Collection 对象。您可以从集合中提取位置,例如

$selectedLocations = $locations->pluck('location')->toArray();

然后检查$selectedLocations数组中是否存在位置

<option {{(old('location') == "Room A1" || in_array("Room A1", $selectedLocations) ? 'selected' : ''}}  value="Room A1">Room A1</option>

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-05-16
    相关资源
    最近更新 更多