Laravel/Blade: 预选下拉选项

Laravel/Blade: pre-selected dropdown option

我正在使用 foreach 循环通过 bensampo's ENUMS 库生成下拉列表,但我需要能够预先 select 其中一个,因为我有一个编辑查看,我需要它来加载我数据库中的选项。

我的 select 在我的编辑视图中:

<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 作为列表。

在您的“编辑”页面上,您将现有的邮件消息作为 $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>