Предлагаю обратить внимание на мой Laravel проект. Его можно рассматривать, как тестовое задание, которое придумал сам. Хотя, эта идея, возможно, может пригодиться и в работе... Кстати, что то подобное есть, вроде BPM ELMA365. Однако, насколько я понял, там есть ограничения. В моем проекте все описывается не визуально, а скорее, как промпт, но с соблюдением лексики PHP. И ограничений для программиста никаких нет. Ссылка на скриншоты и некоторые файлы: https://drive.google.com/drive/folders/1ueTh1VPSVE1a2IwxLen7Bzefv4fYUe51?usp=sharing Описание модуля InfoCountry содержит минимум информации. Поля там не определены. Ссылку на проект вышлю, если заинтересует. Особенность данного приложения - передавать на фронтенд не только данные, но и метаинформацию, которая описывает эти данные. Фронтенд это может сам обрабатывать в одних и тех же шаблонах. При необходимости шаблоны, конечно, можно изменять, добавлять. Цель такого подхода - ускорение разработки; создание MVP админки, и возможно, самой админки. Один файл метаинформации - это модуль для панели администрирования. Также, модели, контроллеры, ресурсы и реквесты доступны из других модулей. Для работы модуля достаточно создать файл метаинформации в определенной директории и добавить одну строку в файл маршрутизации для модуля. Даже без моделей, контроллеров, ресурсов и реквестов - модуль заработает. Но без валидации, как минимум. Впоследствии все необходимые файлы нужно добавить. Например, для модуля InfoCountry контроллеры, реквесты и ресурсы отсутствуют. Можно и модели убрать, но они нужны для наполнителей (seeders). В этом случае, необходимые классы генерируются "на лету" и наследуются динамически. "Динамические" модели также содержат в себе Relations и атрибуты по умолчанию (читаются из Schema). При "физическом" создании многие классы не содержат в себе ничего, только наследуются. Главное в них - это наименование класса и наименование директории, в которой они находятся. Возможен вывод сразу нескольких дочерних сущностей. Минимум, что может метаинформация содержать - это иерархия моделей (хотя желательно описывать и поля). Все остальное - поля, атрибуты будут добавлены автоматически, включая метки сущностей и полей, фильтры, сортировка, и т.д. Фильтры и сортировка работают также и на полях, которые относятся к родительским сущностям. В этом случае доступна "точечная" нотация имен. Фильтры могут быть связаны. При жестком связывании, пока предыдущие фильтры не выбраны, текущий фильтр будет недоступен. Есть и простое связывание. Работает валидация форм. Для таблиц, в т.ч. дочерних, предусмотрена пагинация. "Хлебные крошки" формируются автоматически. Такой подход не ограничивает программиста ни в чем. Всегда можно переписать любой метод, добавить действия в контроллерах. Вплоть до того, что в итоге можно совсем отказаться от метаинформации, особенно, если требуется высокая производительность. Чтобы поле обрабатывалось, как файл или картинка, достаточно в описание поля добавить атрибут 'isFile' или 'isImage'. Внешние ключи автоматически отображаются, как выпадающий список со значениями Ident-поля родительской сущности. Такое поведение можно изменить. Сделана максимальная декомпозиция с комментариями. Это позволяет настраивать сервис под каждый проект индивидуально и интуитивно. Их может быть несколько. Некоторые необходимые возможности пока отсутствуют. Например, кэширование, контроль доступа, сохранение состояния страниц, фильтр по дате. Проект сделан нарочно без авторизации. MAX: https://max.ru/u/f9LHodD0cOKVF4a4GgG1nM9PR7Ofix-sMNE3mXlkxdCuE-wMZR6vunf8ABY e-mail: alexselenga@yandex.ru