You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将性别、公司下拉框转换为Laravel {!! Form !!}格式?

Hey,我来帮你把这两个下拉框转换成Laravel的{!! Form !!}格式,顺便优化一下原代码里的小问题(比如第二个下拉框嵌套了多余的col-md-2 div)。

首先要注意:Laravel 5.8之后默认不再自带Form门面,你需要先安装Laravel Collective的HTML扩展包,执行这个命令:

composer require laravelcollective/html

然后在config/app.php的providers数组里添加:

Collective\Html\HtmlServiceProvider::class,

在aliases数组里添加:

'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,

接下来是两个下拉框的转换代码:

1. 性别选择下拉框

这里保留了原有的禁用默认提示选项,以及所有可选值:

<div class="col-md-2">
    <div class="form-group-sm">
        {!! Form::select('gender', [
            '' => ['text' => '<small>Gender</small>', 'disabled' => true, 'selected' => true],
            'All' => 'All',
            'Male' => 'Male',
            'Female' => 'Female'
        ], null, [
            'class' => 'form-control form-control-sm',
            'id' => 'gender'
        ]) !!}
    </div>
</div>
  • 我们把默认的提示选项做成数组形式,给它加上disabled和selected属性,确保它是默认显示但不可选的状态
  • 用{!! !!}来渲染<small>标签,避免被HTML转义

2. 公司选择下拉框

原代码里的循环逻辑有点问题(只有当ID=1的公司存在时才会显示"全部"选项),我们调整成更可靠的方式:

首先在控制器里处理公司数据,排除ID=1的公司,并提前加入"全部"选项:

// 获取排除ID=1的公司,用pluck直接生成"名称=>ID"的数组
$companies = \App\Models\Company::where('id', '!=', 1)->pluck('name', 'id');
// 把"全部"选项加到数组开头(如果需要"全部"对应空值,就改成'' => 'All')
$companyOptions = ['All' => 'All'] + $companies->toArray();

然后在视图里用Form生成下拉框:

<div class="col-md-2">
    <div class="form-group-sm">
        {!! Form::select('company', [
            '' => ['text' => 'Company', 'disabled' => true, 'selected' => true],
        ] + $companyOptions, null, [
            'class' => 'form-control form-control-sm',
            'id' => 'company'
        ]) !!}
    </div>
</div>
  • 移除了原代码里多余的内层col-md-2 div,避免布局错乱
  • 提前在控制器处理数据,让视图更简洁,逻辑更清晰
  • 同样保留了禁用的默认提示选项

这样转换后的代码既符合Laravel Form的写法,又保留了原HTML的所有功能,还优化了逻辑和布局~

内容的提问来源于stack exchange,提问作者gwapo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:41:09