Sonata Admin中每列的排序方向

Posted

技术标签:

【中文标题】Sonata Admin中每列的排序方向【英文标题】:Sort direction in each column in Sonata Admin 【发布时间】:2019-04-21 16:51:49 【问题描述】:

在列表视图中,当我第一次单击排序按钮时,所有字段的默认方向都是 ASC。有没有办法为每个字段设置方向?比如:

$listMapper
    ->add('name', null, [
        'sort_order' => 'ASC'
    ])
    ->add('date', null, [
        'sort_order' => 'DESC'
    ])

【问题讨论】:

你只能对右边的一个属性进行排序,对吧?那么这看起来如何? 据我所知:没有 根据 Sonata Admin 文档,您只能提供一个字段进行排序。但是您可以使用 configureQuery() 方法重写您的查询并添加您想要的所有 OrderBy。 @GasKa 我不想要多个字段进行排序,我只希望每个字段都有自己的排序方向,所以当我第一次单击日期列排序按钮时,它会排序后代,什么时候我第一次点击名称coolumn排序按钮它排序上升 【参考方案1】:

好吧,虽然它不是很花哨,但我设法让它工作了。在 SonataAdminBundle/views/CRUD/base_list.html.twig 模板中,就在创建排序参数之后

% set sort_parameters = admin.modelmanager.sortparameters(field_description, admin.datagrid) %

我添加了这段代码:

% set sortFilters = sort_parameters['filter'] %
% set sortFilters = sortFilters|merge('_sort_order': field_description.options._sort_order) %
% set sort_parameters = sort_parameters|merge('filter': sortFilters) %

现在我唯一要做的就是告诉管理员中的字段排序顺序,如下所示:

$listMapper->
    ->add('sent', null, [
        '_sort_order' => 'DESC',
        ...

不需要设置 ASC,因为它是默认值。

正如我之前所说:不喜欢也不喜欢它,但它对我有用。

【讨论】:

以上是关于Sonata Admin中每列的排序方向的主要内容,如果未能解决你的问题,请参考以下文章

Angular 表中的排序方向和顺序(升序、降序)

计算循环中每列的中位数

获取二维数组中每列的第二个最小值

计算Spark DataFrame中每列的内核密度

如何列出各个列,其中每个列包含一个 id 计数,其中每列中的 id 不在 MySQL 中每列的不同表中

查找数据框中每列的平均值,按标签分组,不包括一个标签