Sonata Admin + 在列表视图中显示所有项目(不是每页)

Posted

技术标签:

【中文标题】Sonata Admin + 在列表视图中显示所有项目(不是每页)【英文标题】:Sonata Admin + show all items on list view (not per page) 【发布时间】:2016-12-18 12:17:56 【问题描述】:

在Sonata Admin Bundle 中,您有一个列表视图,您可以在其中添加要在表格中显示的字段。

表格底部有结果数和分页数。我喜欢每页的分页和项目。但我想在页面加载时显示所有项目。因此,所有项目都显示在页面上,但您仍然可以选择减少每页的结果数。

问题是我不知道如何做到这一点。有人可以帮我上路吗?

【问题讨论】:

***.com/questions/37537300/… ***.com/questions/37537300/… enter link description here 【参考方案1】:

其实是可以的。 你有 EntityAdmin

a) 定义可能的“每页结果”值列表。

现在是 protected $perPageOptions = array(16, 32, 64, 128, 192);

所以最简单的解决方案可能就是输入一个新的非常大的数字,例如敌人

protected $perPageOptions = array(16, 32, 64, 128, 192, 1000000);

但如果你想真正做到“全部”,那么你必须这样做

protected $perPageOptions = array(16, 32, 64, 128, 192, 'All');

然后

2) 重新定义一个方法EntityAdmin::buildDatagrid() 来处理这个'All'$filterParameters['_per_page']

【讨论】:

这是否也会在第一次加载页面时加载所有行?【参考方案2】:

在 SonataAdmin 3.x 中要默认拥有所有行,您需要执行以下操作:

1 - 将 _per_page = All 添加到 $datagridValues

 protected $datagridValues = array(
    '_sort_order' => 'ASC',
    ...
    '_per_page' => 'All',
);

2 - 全部添加到 $perPageOptions:

protected $perPageOptions = [16, 32, 64, 128, 192, 'All'];

3 - 将 $maxPerPage 设置为全部:

protected $maxPerPage = 'All';

【讨论】:

【参考方案3】:
class YourAdmin extends AbstractAdmin

    protected $perPageOptions = [64, 128, 256, 'All'];

    protected $datagridValues = [
        '_per_page' => 'All',
    ];

    protected $maxPerPage = 'All';

    ...

如果您发现 $maxPerPage 变量奇怪或多余,请在 sonata-project dot org 向 @author Thomas Rabaix thomas.rabaix 询问他

【讨论】:

@nielsv 这也会在第一次加载页面时加载所有行

以上是关于Sonata Admin + 在列表视图中显示所有项目(不是每页)的主要内容,如果未能解决你的问题,请参考以下文章

在 Sonata Admin 列表视图中显示不同的实体

Sonata Admin - 只允许显示登录用户创建的内容

在 Sonata Admin 的列表视图(角色/权限)中编辑

Sonata admin 一对多和多对一显示列表

带有 FosUserBundle 的 Sonata Admin Bundle 列表

Symfony3.1 & Sonata Admin - 列表字段的模板被忽略