我有一个带有操作的自定义CRUD控制器,该控制器检索自定义原则结果集并将其传递给自定义模板。是否可以在不重用标准列表模板的情况下利用Sonata Admin的分页机制?
如果是这样,那么分页程序需要什么样的对象格式?我在文档中看不到对此的任何提及
我需要用结果填充的模板是base_results.html.twig:
{% block num_pages %}
{{ admin.datagrid.pager.page }} / {{ admin.datagrid.pager.lastpage }}
-
{% endblock %}
{% block num_results %}
{% transchoice admin.datagrid.pager.nbresults with {'%count%': admin.datagrid.pager.nbresults} from 'SonataAdminBundle' %}list_results_count{% endtranschoice %}
-
{% endblock %}
{% block max_per_page %}
<label class="control-label" for="{{ admin.uniqid }}_per_page">{% trans from 'SonataAdminBundle' %}label_per_page{% endtrans %}</label>
<select class="form-control per-page small" id="{{ admin.uniqid }}_per_page">
{% for per_page in admin.getperpageoptions %}
<option {% if per_page == admin.datagrid.pager.maxperpage %}selected="selected"{% endif %} value="{{ admin.generateUrl('list', {'filter': admin.datagrid.values | merge({'_page': 1, '_per_page': per_page})}) }}">
{{ per_page }}
</option>
{% endfor %}
</select>
{% endblock %}
如果要在结果集上添加其他约束,我该如何改编Sonata列表操作中的以下代码?
if (false === $this->admin->isGranted('LIST')) {
throw new AccessDeniedException();
}
$datagrid = $this->admin->getDatagrid();
$formView = $datagrid->getForm()->createView();
// set the theme for the current Admin Form
$this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
return $this->render($this->admin->getTemplate('list'), array(
'action' => 'list',
'form' => $formView,
'datagrid' => $datagrid,
'csrf_token' => $this->getCsrfToken('sonata.batch'),
));
该DatagridBundle
过程中,为了从管理分离的列表,分页和过滤机制,让他们可以重复使用在其他地方工作。因此,它还不稳定。我强烈建议您目前使用AdminBundle中的分页。
关于您的主要问题,如果您想完全了解如何使用寻呼机,建议您看一下该Datagrid::buildPager
方法(https://github.com/sonata-project/SonataAdminBundle/blob/master/Datagrid/Datagrid.php #L90)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句