在更新页面上包括关系实体的列表视图

时间:2019-07-10 19:31:25

标签: backpack-for-laravel

我正在尝试扩展更新视图,以在编辑表单下方包括一些相关项目的列表视图。

我有两个模型,即Publishers和Volumes,它们之间存在多对多的关系。我想做的是...。当用户单击发布者的编辑按钮时,我希望他们转到带有标准编辑字段的页面,但还希望在列表下方有一个列表视图,其中列出了所有内容通过它们的关系连接到该发布者的卷的数量。

有一种简单的方法吗?

我希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

实际上,背包中没有标准功能可以做到这一点。这是一种非常不寻常的做事方式。但是实现它并不难。

如果一个发行商的供应商太多(我希望是这种情况),我会保持简单,不要尝试在其中包括整个背包列表视图(带有ajax,按钮,过滤器等)表格的顶部。我将添加带有条目的标准HTML表(以及使用target = _blank编辑编辑供应商的按钮)。

这是我的处理方法:

  1. 在Publisher CRUD中,我将CTFontGetGlyphsForCharacters()用于“编辑”操作;您可以在bool isBorder(int col, int row, int width, int height) { return col == 0 || col == width - 1 || row == 0 || row == height - 1; } void fillScreen(void) { for(int col = 0; col < w; ++col) { for(int row = 0; row < h; ++row) { screenMap[col][row]= isBorder(col, row, w, h) ? screenBorder: backGround; } } } 方法中使用$this->crud->setEditView('edit_publisher_with_vendors')来做到这一点;

  2. 在该自定义编辑视图中(在我的示例中为setup()),我将所有内容复制粘贴到does not get overwritten中,并在Edit表单顶部添加一个带有Vendors的表格;请注意,您在此视图中当前的条目为edit_publisher_with_vendors.blade.php;由于模型之间存在关系,因此您可以检查模型是否有使用$entry的供应商,并使用$entry->vendors()->count()来获取供应商。

希望有帮助。

答案 1 :(得分:1)

正如@tabacitu所述,Backpack目前没有内置的解决方案。也就是说,这可能对您有用:

这将允许您使用嵌套列表视图的所有功能,包括与实体进行交互而不会与父级完全冲突

第1步,构建常规的CRUD

  • 构建两个普通的CRUD,一个用于发布者,一个用于卷

第2步,进行无框布局

  • 复制vendor/backpack/base/layout.blade.php
  • 将其命名为frameless-layout.blade.php
  • 删除@include('backpack::inc.main_header')@include('backpack::inc.sidebar')

第3步,创建自定义列表视图

  • 复制vendor/backpack/crud/list.blade.php
  • 将其命名为sub-list.blade.php
  • 将顶行更改为@extends('backpack::frameless-layout')

第4步,创建一个自定义字段

  • Create a custom form field包含一个iFrame
  • 在您的自定义字段模板中,将iFrame的网址设置为相关资源的“列表”网址
  • 您还需要利用List Filters和动态设置它们的方法,以便子列表仅显示与父项有关的记录

步骤5,配置和使用字段

  • 在您的原始控制器中,使用addField添加新字段及其相关模型的配置