有没有一种方法可以在一个视图中显示所有Sylius产品?

时间:2019-08-30 21:19:56

标签: symfony sylius

我知道可以按分类使用展示产品,但是如果我想以一种视图显示所有产品,无论该产品属于哪个类别,该怎么办?

在Sylius中是否有可能,还是我必须编写自己的控制器,该控制器将使用查询生成器输出所有这些?如果是,那又如何?遍历所有分类单元,并在ORM上抛出大量查询?

1 个答案:

答案 0 :(得分:1)

您可以使用Sylius捆绑包来做到这一点。首先,创建一个新路线,例如在config/routes/sylius_shop.yaml中:

sylius_shop_product_all:
    path: /all
    methods: [GET]
    defaults:
        _controller: sylius.controller.product:indexAction
        _sylius:
            template: "@SyliusShop/Product/index.html.twig"
            grid: sylius_shop_custom_filter

然后定义一个sylius_shop_custom_filter网格。如果您不知道该怎么做,请检查documentation。 像这样禁用仓库方法的taxon参数:

        sylius_shop_custom_filter:
            driver:
                name: doctrine/orm
                options:
                    class: "%sylius.model.product.class%"
                    repository:
                        method: findAllByChannel
                        arguments:
                            channel: "expr:service('sylius.context.channel').getChannel()"
                            # taxon: "expr:notFoundOnNull(service('sylius.repository.taxon').findAll)"
                            locale: "expr:service('sylius.context.locale').getLocaleCode()"
                            sorting: "expr:service('request_stack').getCurrentRequest().get('sorting', [])"

然后像在documentation中那样扩展ProductRepository,从父存储库复制createShopListQueryBuilder方法并将其命名为findAllByChannel。有来自querybuilder的未使用的$taxon参数。