Magento 2: каковы преимущества использования компонентов сетки пользовательского интерфейса по сравнению со стандартом Grid.php?


Итак, Magento 2 представил компоненты пользовательского интерфейса.

Одним из них является Сетка компонентов пользовательского интерфейса (более подробную информацию о ней вы можете найти здесь: Объяснение сетки компонентов пользовательского интерфейса в Magento 2)

При создании пользовательского модуля я придерживался старого метода Magento 1, я создал файл Grid.php, который обрабатывает мою сетку adminhtml.

Мне интересно, в чем преимущества использования сетки компонентов пользовательского интерфейса вместо метода Grid.php?

Author: Community, 2016-05-04

2 answers

Я перечислю те, которые я нашел до сих пор.

  • расширяемость. Вы можете добавить новый xml-файл для добавления новых столбцов.
  • конфигурация поверх кода. Меньше кода для логики, больше декларативных XML-файлов.
  • меньше трафика по сети. XML преобразуется в json и отправляется в браузер. Кроме того, каждый тип поля отправляется в браузер только один раз, и генерация формы происходит на клиенте.
  • новая система позволяет изменять порядок столбцов и сохранять состояние.

Не по теме: Я получил "внутреннюю информацию" о том, что планируется переместить все сетки и формы в компоненты пользовательского интерфейса. Так что вам следует начать их использовать.

 23
Author: Marius, 2016-05-04 18:39:22

@raphael-at-digital-pianism попросил меня опубликовать этот список вещей, которые, по моему мнению, неверны в XML-компоненте пользовательского интерфейса adminhtml grid, так что вот:

Что не так с XML-компонентом пользовательского интерфейса сетки adminhtml?

  • Медленный цикл обратной связи во время разработки
  • Трудно понять
  • Трудно отлаживать, если что-то пойдет не так (в основном только по сравнению с XML в ядре)
  • Раскрыто много деталей реализации
  • Поощряет копирование и вставку
  • XML не был предназначен для людей, чтобы читать и писать
  • Трудно проверить
  • Неясно, какие еще варианты доступны
  • Множество шаблонов И магии (худшее из обоих миров)
  • В сочетании с идеей отображения табличных данных БД
  • Множество повторяющихся строк имен в файле

"Придумайте лучшее решение", вы говорите?

Ну, а я нет. Но вот примерное представление о том, как я, как разработчик, хотел бы иметь возможность создавать сетки adminhtml и формы.

  • Создайте реализацию GridDataSourceInterface
  • Компонент сетки использует метод GridDataSourceInterface::getGridItemType() для получения имени класса или имени интерфейса
  • Интерфейс отражается, и все геттеры используются для определения возможных столбцов
  • Типы столбцов выводятся из возвращаемых типов
  • Типы, которые не могут быть автоматически определены как допустимые типы столбцов, игнорируются.
  • Экземпляр реализации GridDataSourceInterface можно использовать для настройки видимости по умолчанию и типы столбцов, использующие хорошие описательные методы, где это необходимо.

Преимущества:

  • Определение сеток (и форм) с помощью IDE с помощью метода автозаполнения
  • Разумные значения по умолчанию
  • Агностик реализации
  • Только для простых сущностей потребуется написать очень мало кода
  • По сравнению с подходом XML, без потери функций
  • Расширяемость с помощью перехватчиков
  • Если интерфейсы классов выполнены с определением сеток и формы также могут быть такими же декларативными, как XML (но гораздо более простыми)
  • Соответствует "образу мышления" Magento 2 для классов контрактов на обслуживание
  • Никаких изменений в текущем взаимодействии с кодом интерфейса не требуется (тот же трафик по проводу)
  • Сортировка и настройка столбцов внешнего интерфейса могут продолжать работать так же, как и сейчас
  • НЕТ МОАРА XML

Что касается первоначального вопроса, я не думаю, что использование старого стиля Magento 1 блокирует создание интерфейсов adminhtml - это правильное решение.
Я только выступаю за то, чтобы новое объявление сетки на основе XML было заменено чем-то лучшим как можно быстрее.

 22
Author: Vinai, 2016-05-15 14:32:31