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?

Или есть лучший способ для моей цели?


person Sonson123    schedule 19.08.2015    source источник


Ответы (1)


Конфигурация этой сетки находится здесь (EnrichBundle/Resources/config/datagrid/association_product.yml). Вы можете настроить параметр source.repository_method для использования собственного запроса в репозиторий продукта (например, createAssociationDatagridQueryBuilderWithFamily). Когда продукт будет передан этому методу репозитория, вы сможете получить его семейство.

Это первый шаг, но кажется, что вы хотите сделать это только для определенных продуктов.

Два решения:

  • Вы решаете в методе репозитория (поскольку у вас есть продукт, вы можете решить, будете ли вы фильтровать его семейство)
  • Вы выбираете шаблон: в этом случае вы можете создать копию сетки ассоциации (в конце файла association_product.yml вы можете скопировать первую конфигурацию сетки и переименовать ее (например, association-with-family-product-grid). Затем в своем шаблоне вы можете загрузить одну руду в другую (параметр сетки здесь).

Не забудьте очистить кеш после манипуляций с конфигурацией сетки данных, и все готово!

person Julien Sanchez    schedule 19.08.2015
comment
Спасибо за подробный ответ :), но мне все еще неясно. В моем случае использования есть f.ex. 4 различных типа ассоциации, которые используются для всех продуктов. Поведение типов ассоциаций должно быть одинаковым для всех продуктов: для типов ассоциаций с идентификатором 1-3 все продукты должны отображаться в сетке ассоциаций, но когда пользователь нажимает на тип ассоциации с идентификатором 4, должны отображаться только продукты одного семейства. Поскольку переключение между типами ассоциаций в графическом интерфейсе реализовано в Javascript, мне также придется реализовать добавление Family-filter в Javascript? - person Sonson123; 19.08.2015
comment
Да, извините, ссылка на настройку сетки в шаблоне не та. Это хороший вариант: github.com/akeneo/pim-community-dev/blob/master/src/Pim/Bundle/. В этой строке вы находитесь в шаблоне и имеете доступ к продукту и типу ассоциации. - person Julien Sanchez; 19.08.2015
comment
Теперь я понимаю ваше решение, спасибо! К сожалению, это не так просто, как я ожидал. Думаю, подожду пару недель до Akeneo 1.4 :-) и потом все это перезапишу. - person Sonson123; 19.08.2015
comment
Это определенно будет проще с новой формой редактирования продукта. В настоящее время я усердно работаю над этим! :) - person Julien Sanchez; 19.08.2015