Обновление таблицы ui_bookmark при добавлении столбцов через XML ui_component

9

В Magento 2 ui_componentсетка на основе позволяет вам изменить порядок столбцов, и Magento запомнит ваши настройки при следующем входе в систему. Это достигается путем сохранения данных в Magento в ui_bookmarkтаблице (через Magento\Ui\Model\Bookmarkобъект модели).

Хотя эта функция полезна, она может создавать проблемы, когда разработчик расширений или системный интегратор использует Magento ui_componentXML для добавления столбцов в таблицу. Если есть пользовательские данные, ui_bookmarkто Magento будет (по-видимому) игнорировать порядок сортировки нового столбца, и могут произойти странные / неожиданные вещи.

Существует ли передовая практика и / или система для разработчиков расширений, которые хотят добавить столбцы в сетку пользовательского интерфейса (как Magento, так и свои) и убедиться, что столбец находится где-то по отношению к другим? то есть - «Эта вторая кнопка действия должна всегда появляться последней или всегда должна быть второй последней», или «поле имени всегда должно быть после идентификатора.

Нужно ли разработчику расширения через app/code/Package/Module/Setup/...класс обращаться к ui_bookmarkтаблице и обновлять эти записи самостоятельно? Или есть лучший способ сделать это? Или разработчикам расширений нужно просто жить со столбцом, добавляемым в неожиданные места, когда у пользователя уже есть запись ui_bookmark?

Алан Сторм
источник

Ответы:

4

Я думаю, что это ошибка в magento2.

Я обычно очищаю таблицу ui_bookmark после добавления новых столбцов любыми модулями.

Magento2 сохраняет позиции столбцов, даже если нет никаких изменений в порядке столбцов.

"positions":{
    "ids":0,
    "increment_id":1,
    "store_id":2,
    "created_at":3,
    "billing_name":4,
    "shipping_name":5,
    ...
}

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

Если будет добавлено относительное упорядочение вроде as name column after idили my_column before actions, у нас будет ужасное перетаскивание столбцов в пользовательском интерфейсе.

Если вы очистите ui_bookmarkтаблицу во время установки модуля - вы можете очистить пользовательские настройки для списка.

Возможно, разработчики ядра должны исправить столбец действий как последнее в качестве частичного решения.

Я думаю, что этот вопрос имеет не единственно правильное решение

Максимум
источник