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

Другие вопросы по тегам