Php 奏鸣曲管理&x2B;在列表视图中显示所有项目(不是每页)

Php 奏鸣曲管理&x2B;在列表视图中显示所有项目(不是每页),php,symfony,pagination,sonata-admin,sonata,Php,Symfony,Pagination,Sonata Admin,Sonata,在中,您有一个列表视图,可以在其中添加要在表中显示的字段 在表的底部有结果数和分页。我喜欢每页的页码和项目。但是我想显示页面加载时的所有项目。因此,所有项目都显示在页面上,但您仍然可以选择减少每页的结果数 问题是我不知道该怎么做。有人能让我上路吗?事实上,这是可能的。 您的EntityAdmin中有 a) 定义可能的“每页结果”值列表 现在是了 protected$perPageOptions=array(16,32,64,128,192) 因此,最简单的解决方案可能是,以一个新的非常大的数字

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

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


问题是我不知道该怎么做。有人能让我上路吗?

事实上,这是可能的。 您的
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) 在SonatAdmin 3.x中重新定义一个方法
EntityAdmin::buildDatagrid()
来处理
$filterParameters[''''''''每页']

'All'
值。要在默认情况下拥有所有行,您需要执行以下操作:

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';

如果您发现$maxPerPage变量奇怪或多余,请询问sonata project.org的@author Thomas Rabaix Thomas.Rabaix,这是否也会加载第一次加载页面上的所有行@nielsv这也会在第一次加载页面时加载所有行
class YourAdmin extends AbstractAdmin
{
    protected $perPageOptions = [64, 128, 256, 'All'];

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

    protected $maxPerPage = 'All';

    ...
}