Laravel/Blade:预选下拉选项
Posted
技术标签:
【中文标题】Laravel/Blade:预选下拉选项【英文标题】:Laravel/Blade: pre-selected dropdown option 【发布时间】:2021-01-26 02:29:55 【问题描述】:我正在使用foreach
循环通过bensampo's ENUMS 库生成一个下拉列表,但我需要能够预先选择其中一个,因为我有一个编辑视图并且我需要它来加载选项在我的数据库中。
我在编辑视图中的选择:
<select name="type" id="type" class="form-control">
@foreach ($MailMessageTypes as $value =>$label)
<option value="$value">$label</option>
@endforeach
</select>
我在 MailMessageController 中的函数编辑:
return view('MailMessage.edit', [
'MailMessage' => $MailMessage],
["MailMessageTypes" => MailMessageType::toSelectArray()
]);
我尝试在控制器中使用枚举库的getValues()
和getKeys()
,但这会为我生成(重复),因为foreach
会不断生成所有选项。我正在使用 select2 插件
补充:我在列表中使用select2 plugin。
【问题讨论】:
您需要在要选择的特定选项上设置selected
属性。我认为这个答案对你有用:***.com/a/41101196/1024832
【参考方案1】:
在您的编辑页面上,您将现有邮件消息作为$MailMessage
传递。我假设您的数据库的值为id
,因此它可以作为$MailMessage->id
访问。当您循环显示每个选项时,您需要检查该选项的值是否等于您正在编辑的消息的 id。如果匹配,则设置selected
attribute on the <option>
:
<select name="type" id="type" class="form-control">
@foreach ($MailMessageTypes as $value => $label)
<option value="$value" ($MailMessage->id == $value) ? 'selected' : ''>
$label
</option>
@endforeach
</select>
在您的 html 中,您的 <select>
最终会看起来像:
<select name="type" id="type" class="form-control">
<option value="1">COM01</option>
<option value="2" selected>COM02</option>
<option value="3">COM03</option>
// ... the rest of the options
</select>
【讨论】:
以上是关于Laravel/Blade:预选下拉选项的主要内容,如果未能解决你的问题,请参考以下文章
将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用
使用 Laravel / Blade 中的旧输入定义所选选项
如何在 laravel Blade 中创建可搜索的选择选项表单