导致具有多个参数的过滤列表的自定义操作?

Posted

技术标签:

【中文标题】导致具有多个参数的过滤列表的自定义操作?【英文标题】:Custom Action leading to filtered list with multiple parameters? 【发布时间】:2017-05-17 13:02:26 【问题描述】:

我需要我的自定义操作按钮指向过滤后的奏鸣曲列表(课程),但我需要使用两个参数(公司和外部)。

以前我一直在使用这种方法:Sonata Admin Action Button to Pre Filtered List,但我无法同时使用两个参数。

<a class="btn btn-sm btn-default" href=" path('admin_myvendor_mybundle_curriculum_list','filter[companies][value]' : object.id ) "><i class="fa fa-university"></i> Curriculums </a>

知道如何解决这个问题吗?我考虑过创建一个控制器并使用自定义 QueryBuilder,但我仍然想使用 Sonata 列表(并且不会在 Admin 中覆盖我的默认 ListMapper)

【问题讨论】:

【参考方案1】:

您需要做的是在您的管理员中覆盖 createQuery() 方法。

棘手的部分是列表的原始查询使用SELECT DISTINCT,因此对于您将添加到查询中的每个订单,您需要将相同的字段添加到选择语句中。

https://github.com/sonata-project/SonataAdminBundle/issues/1548

在我的一个捆绑包中,我使用了一种解决方法,通过扩展 ProxyQuery 类,自动将字段按子句顺序添加到查询的选择部分。

如果你想看看:https://github.com/blast-project/DoctrinePgsqlBundle/blob/master/Datagrid/ProxyQuery.php 魔法发生在第 98 行和第 112 行之间

【讨论】:

问题是我已经为我的“默认”列表覆盖了 createQuery() 方法...我需要两个列表,一个默认列表视图(我已经在其中使用 createQuery( )),另一个带有过滤结果(但继续使用奏鸣曲列表而不需要覆盖模板和所有这些) 很抱歉,我一定误解了您的问题。您想要一个指向一个列表的链接和另一个指向另一个列表的链接,或者一个由两个值过滤的列表? 默认列表(已使用 createQuery)和另一个过滤值列表

以上是关于导致具有多个参数的过滤列表的自定义操作?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA SecurityManager - 具有多个操作的自定义 BasicPermission

Django将多个参数传递给If语句中的自定义模板过滤器

具有多个子项目的项目列表的自定义适配器?

如何在具有多个参数的自定义函数中使用 mutate

具有自动布局的自定义 UITableViewCell 会导致警告

过滤数组列表或列表中的自定义对象[重复]