Включение представления списка объекта отношения на странице обновления - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь расширить представление обновления, чтобы включить представление списка некоторых связанных элементов под формой редактирования.

У меня есть две модели: издатели и тома, которые имеют отношение ко многим. Я пытаюсь сделать следующее: когда пользователь нажимает на кнопку редактирования для издателя, я хочу, чтобы он переходил на страницу со стандартными полями редактирования, но также имел вид списка ниже формы, в которой перечислены все томов, которые связаны с этим издателем через их отношения.

Есть ли простой способ сделать это?

Надеюсь, это имеет смысл.

Ответы [ 2 ]

1 голос
/ 13 июля 2019

Как уже упоминалось @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, создайте пользовательский вид списка

  • copy vendor/backpack/crud/list.blade.php
  • назовите его sub-list.blade.php
  • измените верхнюю строку на @extends('backpack::frameless-layout')

Шаг 4, Сделайтенастраиваемое поле

  • Создайте настраиваемое поле формы , содержащее iFrame
  • Внутри шаблона настраиваемого поля установите для URL-адреса iFrame значение «список»"URL соответствующего ресурса
  • Вам также необходимо использовать Список фильтров и метод их динамической установки, поэтомув подсписке отображаются только записи, относящиеся к родительскому элементу

Шаг 5. Настройте и используйте поле

  • В контроллерах crud используйте addField длядобавить конфигурацию для нового поля и связанной с ним модели
1 голос
/ 12 июля 2019

Действительно, в Backpack нет стандартной функциональности для этого.Это довольно необычный способ делать вещи.Но это не так уж сложно достичь.

Если для одного издателя не слишком много поставщиков (как я и ожидаю, это именно тот случай), я бы оставил это простым и НЕ пытался включить весь список рюкзаков.представление (с ajax, кнопками, фильтрами и т. д.) поверх формы.Я бы добавил стандартную HTML-таблицу с записями (и, необязательно, кнопками для редактирования поставщика с target = _blank).

Вот как мне это сделать:

  1. Вв издателе CRUD я бы использовал пользовательское представление для операции редактирования;Вы можете сделать это, используя $this->crud->setEditView('edit_publisher_with_vendors') в вашем методе setup();

  2. В этом пользовательском представлении редактирования (edit_publisher_with_vendors.blade.php в моем примере) я скопировал бы все внутри представление edit.blade.php, которое использует Backpack / CRUD , и добавление таблицы с поставщиками поверх формы редактирования;обратите внимание, что у вас есть текущая запись как $entry в этом представлении;поскольку у модели есть связь, вы сможете проверить, есть ли у поставщиков, использующих $entry->vendors()->count(), и получить поставщиков, использующих $entry->vendors.

Надеюсь, это поможет.

...