【问题标题】:Laravel Form dropdown with optgroup带有 optgroup 的 Laravel 表单下拉菜单
【发布时间】:2018-06-19 15:51:08
【问题描述】:

假设我有一个包含类别的集合,同时渴望加载每个类别的所有描述。所以这意味着,每个类别hasMany 描述。我想在下拉列表中显示所有描述,而optgroup label 是类别名称,属于描述。所以是这样的:

{{ Form::select('description', ['' => 'Select'] + $descriptions) }}

结果将是这样的(第一次谷歌点击):

Example

我知道我需要简单地传递一个多维数组,但我不确定如何实现。任何指针都会有所帮助。我知道下面会给我一个Categories的数组:

Category::orderBy('name', 'asc')->pluck('name', 'id')->all();

但我不能简单地加载描述,因为以下将产生相同的 attay,没有任何描述:

Category::with('descriptions')->orderBy('name', 'asc')->pluck('name', 'id')->all();

【问题讨论】:

    标签: php arrays laravel select optgroup


    【解决方案1】:

    加载类别:

    $categories = Category::with('descriptions')->orderBy('name', 'asc')->get();
    

    然后准备$descriptions数组:

    foreach ($categories as $category) {
        $descriptions[$category->name] = $category->descriptions->pluck('name', 'id');
    }
    

    【讨论】:

    • 这只会创建多个下拉菜单,不是吗?但我需要一个下拉列表中的所有内容,类别名称是 optgroup 标签
    • @Hardist 是的,因为您有很多类别。如果您想在一个下拉列表中显示所有描述,请使用更新答案中的代码。
    • 抱歉,我知道如何使用集合显示一个简单的下拉列表。但我想将类别名称显示为 optgroup 标签,并且对于每个 optgroup(类别)我想显示描述名称。现在我正在使用很多 foreach 循环来做这件事,但我不想这样做
    • @Hardist 据我所知,您应该只使用这种格式 ['group' => ['key' => 'item', 'key' => 'item']] 放置数组,Laravel Collective Form 将使用组构建下拉列表。
    • 谢谢,会玩的:) 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2015-04-03
    • 2019-05-25
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多