Как получить чистый URL для ссылок на разбивку на страницы в Symfony

#symfony #pagination

#symfony #разбивка на страницы

Вопрос:

Все URL-адреса Symfony, которые я использую, — это приятные, понятные для SEO вещи… сайты / новые, сайты / редактировать / 1 и т. Д

Я только что установил пакет разбивки на страницы knp, чтобы получить разбивку на страницы для моих таблиц.

Но генерируемые ссылки выглядят так: app_dev.php/sites?page= 2

Как я могу заставить его использовать обычный стиль ссылки, чтобы страница 2 выглядела так: app_dev.php/sites/2

Любые мысли приветствуются, спасибо.

Ответ №1:

Вам необходимо изменить определение маршрутизации для вашего действия. Что-то вроде этого:

 /**
 * sitesAction
 *
 * @Route("/sites/{page}", requirements={"page" = "d "}, defaults={"page" = 1})
 */
public function sitesAction($page = 1)
{
    (...)
    $paginator  = $this->get('knp_paginator');

    $pagination = $paginator->paginate(
        $query,
        $page/*page number*/,
        $this->get('request')->query->get('max_per_page', 10)/*limit per page*/
    );

    return array('pagination' => $pagination);
}
  

Комментарии:

1. Возможно ли сделать то же самое, используя маршрутизацию. yml-файл? Я не использовал аннотации ни для чего другого, и я хотел бы сохранить его согласованным.

2. Ах, просто для обновления… Я понял это. Просто нужно было добавить /{page} к шаблону и page: 1 к значениям по умолчанию. Спасибо!