【发布时间】: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->location是单个变量,不能等于多个不同的字符串。是数组吗? -
位置是一个数组。
标签: php laravel dropdown updates multi-select