导致具有多个参数的过滤列表的自定义操作?
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