Zend2 маршрутизация, пагинатор и модуль
У меня проблемы с объектом Zend Framework 2 Router. Я пытаюсь реализовать Zend\Paginator
в пример механизма быстрого запуска без успеха. Позволь мне объяснить:
После быстрого старта я закончил примерно так:
'album' => array(
'type' => 'Segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-z][a-z0-9\-]*',
'id' => '[0-9]+'
),
'defaults' => array(
'controller' => 'Album',
'action' => 'index'
)
)
)
Проблема возникает, когда я пытался реализовать paginator для моей страницы просмотра / индексации. Давая что мне нужен роутер вроде /album[/:action][/:id][/:page]
это не работает, потому что маршрутизатор назначает :page
вар в :id
, Я удалил :id
раздел заканчивается чем-то вроде /album[/:action][/:page]
и вызов в моем действии добавления / редактирования
$matches = $this->getEvent()->getRouteMatch();
$id = $matches->getParam('page');
работаю без проблем но мне нравятся вещи мнемонические. Итак, мой вопрос: возможно ли достичь этого без создания дублирующего маршрутизатора только для того, чтобы paginator выглядел так, как мне нравится? я делаю что-то неправильно?
1 ответ
Это не достаточно уникально, как пример с маршрутом:
/album[/:action][/:id][/:page]
id и page необязательны, и оба могут быть целыми числами
если мы попытаемся соответствовать этому маршруту:
/ Альбом / индекс / 99
99 может совпадать с идентификатором, с отсутствующей страницей, или также с страницей, с отсутствующим идентификатором. нет способа узнать, что есть что, так что это не сработает.
Вы можете добавить идентификатор, что-то вроде этого:
/album[/:action][/id/:id][/:page]
так что тогда у вас будет литерал, чтобы вы знали, что это идентификатор:
/album/index/id/99 # :id = 99
или /album/index/99 #:page = 99