【发布时间】:2020-04-25 21:49:08
【问题描述】:
我在选择中向用户列出类别和子类别。如果类别有子类别,则禁用父类别以被选中。在某些情况下,类别没有任何子类别。所以类别和子类别列在同一个选择中。
在我的控制器方面,我有两个模型(类别和子类别)。我如何确定选择? (无论是类别还是子类别)
【问题讨论】:
标签: php laravel html-select
我在选择中向用户列出类别和子类别。如果类别有子类别,则禁用父类别以被选中。在某些情况下,类别没有任何子类别。所以类别和子类别列在同一个选择中。
在我的控制器方面,我有两个模型(类别和子类别)。我如何确定选择? (无论是类别还是子类别)
【问题讨论】:
标签: php laravel html-select
您可以通过几种不同的方式来处理。
例如,给子类别一个带有 sub_category_ 前缀的值,并在控制器中检查所选值是否包含字符串 sub_category_,如下所示。
<option disabled>{{ $element->title }}</option>
@foreach($element->subcategories as $subcategory)
<option value ="sub_category_{{$subcategory->id}}">- {{ $subcategory->title }}</option>
@endforeach
或者您可以将category 和subcategory 放在同一个表中,并带有名为parent_id 的额外标志。
所有父类别都将该值设置为 0,子类别将在 parent_id 列中具有父类别的 ID。
然后,您可以简单地存储该值而无需任何额外工作。
【讨论】:
在模型App\Category中设置关系(假设有模型App\Subcategory)s:
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>
...
【讨论】: