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-&gt;id 访问。当您循环显示每个选项时,您需要检查该选项的值是否等于您正在编辑的消息的 id。如果匹配,则设置selected attribute on the &lt;option&gt;:

<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 中,您的 &lt;select&gt; 最终会看起来像:

<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 中的旧输入定义所选选项

如何使用 php 预选 html 下拉列表? [复制]

如何在 laravel Blade 中创建可搜索的选择选项表单

如何使用 ASP.NET Core Razor 页面预选下拉列表中的项目

Laravel Blade:在对象中调用属性会导致 NULL