@ raphael-at-digital-pianism попросил меня опубликовать этот список вещей, которые я считаю неправильными в XML-компоненте интерфейса администратора adminhtml, так что здесь:
Что не так с компонентом adminhtml Grid UI XML?
- Медленный цикл обратной связи во время разработки
- Трудно понять
- Трудно отлаживать, если что-то идет не так (в основном, только по сравнению с XML в ядре)
- Многое раскрыто в деталях реализации
- Призывает копировать и вставлять
- XML не предназначен для людей, чтобы читать и писать
- Трудно проверить
- Не ясно, какие другие варианты доступны
- Много шаблонов И магии (худшее из обоих миров)
- В сочетании с идеей отображения данных таблицы БД
- Много дублированных строк имени в файле
«Придумай лучшее решение», говорите вы?
Ну, нет. Но вот приблизительное представление о том, как я, как разработчик, хотел бы иметь возможность создавать сетки и формы adminhtml.
- Создать реализацию
GridDataSourceInterface
- Компонент grid использует
GridDataSourceInterface::getGridItemType()
метод для получения имени класса или имени интерфейса
- Интерфейс отражается и все геттеры используются для определения возможных столбцов
- Типы столбцов выводятся из возвращаемых типов
- Типы, которые не могут быть автоматически выведены в качестве допустимых типов столбцов, игнорируются.
GridDataSourceInterface
Экземпляр реализации может быть использован для настройки не по умолчанию видимости столбцов и типов , используя хорошие описательные методы , где это необходимо.
Выгоды:
- IDE помогает определение сеток (и форм) через автозаполнение метода
- Разумные значения по умолчанию
- Реализация агностика
- Для простых объектов нужно написать очень мало кода
- По сравнению с подходом XML, без потери возможностей
- Расширяемость с помощью перехватчиков
- Если интерфейсы классов выполнены, определение сеток и форм также может быть таким же декларативным, как XML (но гораздо более простым)
- Соответствует «образу мышления» Magento 2s для классов контрактов на обслуживание
- Никаких изменений в текущем взаимодействии с кодом внешнего интерфейса не требуется (такой же трафик по сети)
- Сортировка и настройка внешнего интерфейса могут работать так же, как и сейчас.
- NO MOAR XML
Что касается первоначального вопроса, я не думаю, что использование старого стиля Magento 1, блоков для создания интерфейсов adminhtml, является правильным решением.
Я только защищаю, что новое объявление сетки на основе XML должно быть заменено чем-то лучшим как можно быстрее.