Laravel-如何通过单个html选择选项识别哪个模型(两个)

问题描述 投票:0回答:2

我正在选择中向用户列出类别和子类别。如果类别包含子类别,则禁用父类别才能被选中。在某些情况下,类别没有任何子类别。因此,类别和子类别在同一选择中列出。

在控制器方面,我有两个模型(类别和子类别)。我如何确定选择? (无论是类别还是子类别)

php laravel html-select
2个回答
0
投票

在模型App\Category中设置关系(假设有模型App\Subcategory):

public function subcategories()
{
    return $this->hasMany('App\Subcategory', 'category_id','id');
}

使用子类别获取类别:

public function getCategories() {
    $elements = Category::with('subcategories')->get();

    return view('select', compact('elements'));
}

生成视图中的选择:

...
<div class="form-group">
    <label for="exampleFormControlSelect1">Example select</label>
    <select class="form-control" id="exampleFormControlSelect">
        @foreach($elements as $element)
            @if(count($element->subcategories) > 0)
                <option disabled>{{ $element->title }}</option>
                @foreach($element->subcategories as $subcategory)
                    <option>- {{ $subcategory->title }}</option>
                @endforeach
            @else
                <option>{{ $element->title }}</option>
            @endif
        @endforeach
    </select>
</div>
...

0
投票

您可以处理这几种不同的方式。

例如,给子类别一个带有sub_category_前缀的值,并在控制器中检查所选值中是否包含字符串sub_category_,如下所示。

<option disabled>{{ $element->title }}</option>
@foreach($element->subcategories as $subcategory)
    <option value ="sub_category_{{$subcategory->id}}">- {{ $subcategory->title }}</option>
@endforeach

或者您可以在同一个表中同时包含categorysubcategory,并带有名为parent_id的额外标志。

所有父类别的值将设置为0,子类别在parent_id列中具有父类别的ID。然后,您可以简单地存储值,而无需进行任何额外的工作。

© www.soinside.com 2019 - 2024. All rights reserved.