Используйте несколько шаблонов с KnpPaginatorBundle

Я использую KnpPaginatorBundle для управления нумерацией страниц в бэк-офисе моего сайта, и он работает хорошо.

Я настроил его для использования пользовательских шаблонов

knp_paginator:
    template:
        pagination: MyappMainBundle::pagination.html.twig

Затем я хочу использовать тот же пакет в фронт-офисе, но с другой структурой html. Итак, мой вопрос: возможно ли иметь два шаблона для разбиения на страницы? Один для бэк-офиса и один для фронт-офиса.

Заранее спасибо за ваш ответ.


person Mario Radomanana    schedule 16.07.2015    source источник


Ответы (1)


Вы можете настроить шаблон пагинации в контроллере:

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($target, $page);
$pagination->setTemplate('MyBundle:Pagination:pagination.html.twig');
$pagination->setSortableTemplate('MyBundle:Pagination:sortable.html.twig');

В представлении:

{% do pagination.setTemplate('MyBundle:Pagination:pagination.html.twig') %}

или (лучше) в методе рендеринга:

{{ knp_pagination_render(pagination, 'MyBundle:Pagination:pagination.html.twig') }}

Дополнительные сведения см. в документе пакета.

person Matteo    schedule 16.07.2015
comment
Спасибо :) ! Я не видел эту часть документа - person Mario Radomanana; 16.07.2015
comment
Привет @MarioJohnathan Добро пожаловать! Какой метод вы применили? - person Matteo; 16.07.2015
comment
Я использовал {% do pagination %} в шаблоне twig, потому что я делал то же самое с формами с помощью метода {% form_theme %} . Таким образом, я также могу повторно использовать knp_pagination_render несколько раз в одном и том же файле без многократного вызова шаблона. - person Mario Radomanana; 16.07.2015
comment
В качестве альтернативы вы можете расширить Knp\Bundle\PaginatorBundle\Twig\Extension\PaginationExtension своими собственными функциями ветки, такими как acme_pagination_render_backoffice(), которые затем вызывают метод return $this->render($paginator, '::backoffice_paginator.html.twig', $queryParam, $viewParams) с уже установленными шаблонами. Таким образом, вам не нужно будет устанавливать шаблон при каждом использовании средства разбивки на страницы. - person qooplmao; 16.07.2015
comment
@Qoop Спасибо за этот совет :) - person Mario Radomanana; 17.07.2015