首页 > 解决方案 > 在 Sylius 中过滤由发货网格处理的数据

问题描述

我在后台有一个发货网格,无论付款状态如何,它都会显示每个订单。我只想显示 payment_status = 已付款的订单。

我在文档和 GitHub 上一无所获,只有作为搜索引擎的过滤器。另外,网格中没有付款状态列。

如何访问此网格的数据查询并仅选择已付款订单?

这是配置文件 shipping.yml:

sylius_admin_shipment:
resource: |
    alias: sylius.shipment
    section: admin
    templates: "@SyliusAdmin\\Crud"
    only: ['index']
    grid: sylius_admin_shipment
    permission: true
    vars:
        all:
            subheader: sylius.ui.manage_shipments
        index:
            icon: truck
type: sylius.resource

我试图添加侦听器、过滤器,但我真的不知道如何管理资源(我猜这是包含数据的变量?),我试图跟踪文件但我没有找到任何东西,也没有医生。

顺便说一句,我对 Sylius 完全陌生,所以如果有人有提示或解决方案,那就太好了!提前致谢

标签: phpsymfonysylius

解决方案


您发布的配置块是“资源路由”,这意味着它是由 Sylius 处理的特殊路由,可自动为给定资源生成 CRUD 路由。有关此的更多信息可以在ResourceBundle 有关路由的文档中找到。

对于列表页面,它使用在您发布的配置中指定的网格。

您需要的是扩展和修改网格的配置
您可以在此处找到此网格的基本配置。

对于您的情况,最简单的方法是覆盖用于“选择”付款的方法。

repository:
    method: createListQueryBuilder # <== Change this one

然后扩展资源并RepositoryPayment其中创建新函数,它将正确添加where到网格使用的查询构建器中。

可以在此处找到有关扩展存储库的更多信息。

希望这可以帮助 :)


推荐阅读