Laravel Voyager-两个下拉菜单“ Category”和“ Subcategory”

时间:2019-01-18 23:23:40

标签: laravel

我正在使用Laravel Voyager管理面板。

我有一个“产品”表,其中PRODUCT的父级为SUBCATEGORY和CATEGORY。我还建立了以下关系:“产品子类别”和“产品类别”。

Screenshot

因此,当我要添加新产品时,可以从下拉菜单中选择CATEGORY和SUBCATEGORY。

问题是,SUBCATEGORY下拉列表显示所有子类别:

我只想从我选择的类别中查看子类别。 (就像我们在voyager中创建关系时获得指定的MODEL的列名(供参考)

我想要这样做的原因是为了防止在错误的类别和子类别下添加产品。

有没有办法做到这一点?我应该在“可选详细信息”字段中使用一些JSON吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,使用默认的Voyager选项无法实现所需的功能。但是,甚至没有必要以这种方式进行操作。

以下方法将使单个下拉列表包含诸如category - subcategory之类的选项。

  1. 的好方法是将sub_categories连接到类别(在sub_categories上使用category_id),然后将产品连接到sub_categories(在product上使用sub_category_id)。

  2. 然后编辑您的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访问子类别的实际值。

祝你好运