【发布时间】:2016-12-18 12:17:56
【问题描述】:
在Sonata Admin Bundle 中,您有一个列表视图,您可以在其中添加要在表格中显示的字段。
表格底部有结果数和分页数。我喜欢每页的分页和项目。但我想在页面加载时显示所有项目。因此,所有项目都显示在页面上,但您仍然可以选择减少每页的结果数。
问题是我不知道如何做到这一点。有人可以帮我上路吗?
【问题讨论】:
标签: php symfony pagination sonata-admin sonata
在Sonata Admin Bundle 中,您有一个列表视图,您可以在其中添加要在表格中显示的字段。
表格底部有结果数和分页数。我喜欢每页的分页和项目。但我想在页面加载时显示所有项目。因此,所有项目都显示在页面上,但您仍然可以选择减少每页的结果数。
问题是我不知道如何做到这一点。有人可以帮我上路吗?
【问题讨论】:
标签: php symfony pagination sonata-admin sonata
其实是可以的。
你有 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']
【讨论】:
在 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';
【讨论】:
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 询问他
【讨论】: