orion76 / projectman

Project Management System
GNU General Public License v2.0
1 stars 0 forks source link

Implement the ability to display CRUD Entity Forms in blocks #19

Open dashiwa opened 5 years ago

dashiwa commented 5 years ago

Предыстория.

Ранее в модуле панелей был функционал , который позволял отображать в блоках формы которые были доступны для администратора. Это позволяло создавать личные кабинеты и др. сложные функционалы с минимумом программирования

Сейчас у нас есть Возможность создать любую энтити которая будет иметь набор форм для редактирования, создания, удаления - доступных только для администратора

Есть две проблемы

  1. Эти формы не присутсвуют среди блоков , они жестко привязаны к роутам.
  2. Для того чтобы привязать каждую новую энтити к блоку - необходимо будет создавать новый плагин в коде

Возможное решение

  1. Создать плагин с Derivative классом Пример core/modules/system/src/Plugin/Block/SystemMenuBlock.php

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

Сама концепция Derivatives пока мне до конца не ясна Примеры других реализаций - Реализует возможность через поле отобразить любой контент через блок https://www.drupal.org/project/entityblock

orion76 commented 5 years ago

Вот вроде неплохо описано: http://blog.dev030.com/posts/dynamically-define-blocks-drupal-8-derivatives

Как я понимаю, derivatives - это способ программного(динамического) создания экземпляров какого-либо плагина.

Вот вроде то, про что ишью: https://cgit.drupalcode.org/entity_form_block/tree/

dashiwa commented 5 years ago

Вот вроде неплохо описано: Как всегда с ошибками :-) Поправил..

Вот вроде то, про что ишью:

orion76 commented 5 years ago

В "стандартной" форме ID entity получается из роута. Откуда будет брать ID Entity форма в блоке?

Чтобы правильно определиться нужны конкретные "ситуации" при которых entity будет редактироваться в блоке.

Чем больше, тем лучше.-)

А уже от этих ситуаций "плясать" реализацию..