2

我正在开发一个基于 Laravel 5.3 和 Backpack CRUD 的项目。我的项目有大约 8 种不同的内容类型(新闻、页面、作品集、活动、团队、视频、画廊、工作)。

我需要能够为每种内容类型 (nn) 添加标签,并且每种内容类型都有自己的特定标签,因此标签不会在内容类型之间共享。

如果我想使用 select_multiple 或 select2_multiple 字段类型,我需要 8 个表用于内容本身、8 个数据透视表和 8 个表用于标签(!)。

显然,我只想为标签提供一个表,但如果我使用 select_multiple 或 select2_multiple 字段类型,我会以每种内容类型的编辑形式获得所有标签。

所以,我的问题是:有没有一种优雅的方法来过滤 select_multiple 或 select2_multiple 字段类型的结果?

我创建了一个包含两种内容类型的简单模式:http: //dbdesigner.net/designer/schema/60412

在此示例中,当我编辑新闻或页面的内容时,我希望能够过滤 content_type_id 上的标签列表。所以我只想查看新闻编辑表单中的新闻标签,以及页面编辑表单中的页面标签。

或者也许我应该按预期使用 select_multiple 字段类型,并接受 8 个标签表(?)

任何帮助或建议将不胜感激。

4

1 回答 1

1

我认为一个干净的方法是:

  • 为每个标签使用创建不同的模型,所以NewsTagPageTag等等PortfolioTag,这只会扩展Tag模型并使用全局范围来过滤之后的结果content_type_id

  • 使用带有 , 等的背包NewsTagselect2_multiplePageTag字段PortfolioTagTag将使用您在模型上设置的任何内容(包括table属性、修改器、访问器等);

干杯!

于 2016-12-13T07:00:05.873 回答