Akeneo: выбрать сеточный фильтр программно
Наши пользователи могут добавлять другие продукты к продукту как ассоциации. Для большинства типов наших ассоциаций не имеет смысла показывать все продукты в сетке, они должны выбирать только продукты из одного семейства.
Пользователь может фильтровать продукты по семейству в графическом интерфейсе Akeneo, но это потребует меньше усилий и сделает наши данные более согласованными, если фильтр будет выбран программно.
Я бы изменил код в Pim/Bundle/EnrichBundle/Resources/views/Association/_associations.html.twig
как это:
var changeAssociation = function (associationId) {
var $idField = $('#pim_product_edit_associations').find('input[type="hidden"][value="' + associationId + '"]');
// 4 is an association example id where only one family should be displayed
if(associationId == 4) {
// TODO: Filter family in the product grid
// mediator.trigger('datagrid:???:' dataGrids.product.name);
}
Как я могу изменить фильтр сетки продуктов в Javascript?
Или есть лучший способ для моей цели?
1 ответ
Конфигурация этой сетки находится здесь (EnrichBundle/Resources/config/datagrid/association_product.yml
). Вы можете настроить source.repository_method
параметр для использования вашего пользовательского запроса в репозитории продукта (createAssociationDatagridQueryBuilderWithFamily
например). Поскольку продукт передается в этот метод хранилища, вы сможете получить его семейство.
Это первый шаг, но кажется, что вы хотите сделать это только на конкретных продуктах.
Два решения:
- Вы решаете в методе хранилища (поскольку у вас есть продукт, вы можете решить, будете ли вы фильтровать его семейство)
- Вы выбираете шаблон: в этом случае вы можете создать копию сетки ассоциации (в конце
association_product.yml
файл, который вы можете скопировать первый конфигурационный файл сетки и переименовать его (association-with-family-product-grid
например). Затем в шаблоне вы можете загрузить одну или другую (опция сетки здесь).
Не забудьте очистить кеш после манипуляций с конфигурацией datagrid, и все готово!