我正在使用Laravel Voyager管理面板。
我有一个“产品”表,其中PRODUCT的父级为SUBCATEGORY和CATEGORY。我还建立了以下关系:“产品子类别”和“产品类别”。
因此,当我要添加新产品时,可以从下拉菜单中选择CATEGORY和SUBCATEGORY。
问题是,SUBCATEGORY下拉列表显示所有子类别:
我只想从我选择的类别中查看子类别。 (就像我们在voyager中创建关系时获得指定的MODEL的列名(供参考)
我想要这样做的原因是为了防止在错误的类别和子类别下添加产品。
有没有办法做到这一点?我应该在“可选详细信息”字段中使用一些JSON吗?
答案 0 :(得分:0)
不幸的是,使用默认的Voyager选项无法实现所需的功能。但是,甚至没有必要以这种方式进行操作。
以下方法将使单个下拉列表包含诸如category - subcategory
之类的选项。
的好方法是将sub_categories连接到类别(在sub_categories上使用category_id),然后将产品连接到sub_categories(在product上使用sub_category_id)。
然后编辑您的SubCategory Model并使用Laravel accessors更改标题值:
class Product{
//stuff
//change showing attribute value for BREAD
public function getTitleAttribute(){
return $this->category->title . ' - ' . $this->getOriginal('title');
}
// access original subcategory title
public function getRealTitleAttirbute(){
return $this->getOriginal('title');
}
}
完成了。只是注意到我们可以使用$subcategory->real_title
访问子类别的实际值。
祝你好运