【问题标题】:Akeneo: Select grid filter programmaticallyAkeneo:以编程方式选择网格过滤器
【发布时间】:2015-11-12 10:00:03
【问题描述】:

我们的用户可以将其他产品作为关联添加到产品中。对于我们的大多数关联类型,在网格中显示所有产品是没有意义的,它们应该只选择一个系列中的产品。

用户可以在 Akeneo GUI 中按系列过滤产品,但如果以编程方式选择过滤器,则工作量会减少,并使我们的数据更加一致。

我会像这样修改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 中更改产品网格的过滤器?

或者有没有更好的方法来实现我的目标?

【问题讨论】:

    标签: javascript datagrid akeneo


    【解决方案1】:

    此网格的配置位于here (EnrichBundle/Resources/config/datagrid/association_product.yml)。您可以自定义source.repository_method 参数以在product repository 中使用您的自定义查询(例如createAssociationDatagridQueryBuilderWithFamily)。随着产品被传递到此存储库方法,您将能够检索它的系列。

    这是第一步,但您似乎只想在特定产品上这样做。

    两种解决方案:

    • 您在存储库方法中决定(因为您拥有产品,您可以决定是否过滤它的系列)
    • 您决定模板:在这种情况下,您可以创建关联网格的副本(在association_product.yml 文件的末尾,您可以复制第一个网格配置并重命名它(例如association-with-family-product-grid)。然后在你的模板中,你可以加载一个或另一个(网格选项是here)。

    别忘了在数据网格配置操作后清除缓存,一切顺利!

    【讨论】:

    • 感谢您的详细回答:),但我仍然不清楚。在我的用例中,有 f.ex。 4 种不同的关联类型,用于所有产品。 all 产品的关联类型的行为应该相同:对于 id 1-3 的关联类型,all 产品应该显示在关联网格中,但是当用户点击 id 为 4 的关联类型,只显示一个系列的产品。由于 GUI 中关联类型之间的切换是用 Javascript 实现的,所以我还要实现在 Javascript 中添加 Family-filter?
    • 是的,抱歉,模板中的网格配置链接不是很好。这是好一个:github.com/akeneo/pim-community-dev/blob/master/src/Pim/Bundle/…。在这一行,您在模板中并且可以访问产品和关联类型
    • 现在我了解您的解决方案了,谢谢!不幸的是,它并不像我预期的那么容易。我想,我会等待几周的 Akeneo 1.4 :-) 然后覆盖所有这些东西。
    • 使用新的产品编辑表单肯定会更容易。我目前正在努力! :)
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2012-03-26
    • 2016-01-13
    • 2018-05-18
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    相关资源
    最近更新 更多