0

У меня проблемы с Zend Framework 2 Router object. Я пытаюсь реализовать Zend\Paginator в примере механизма маршрутизации быстрого запуска без успеха. Поясню:zend2 routing paginator и module

После выполнения я быстрый старт закончился с чем-то вроде этого:

'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 var на :id. Я удалил :id раздел заканчивающегося что-то вроде /album[/:action][/:page] и призыва в моем добавлении/редактирование действия

$matches = $this->getEvent()->getRouteMatch(); 
$id = $matches->getParam('page'); 

работает без проблем, но я люблю вещи держать мнемоник. Поэтому мой вопрос: возможно ли достичь этого, не создавая дублирующий роутер только для того, чтобы пагинатор выглядел так, как мне нравится? я делаю что-то неправильное?

+0

проблема заключается в том, что вы указываете id и страница обе являются необязательными, и оба будут соответствовать целым числам. это означает, что регулярное выражение не будет знать, что оно соответствует, оно недостаточно уникально – Andrew

ответ

1

Это не единственный достаточно, как, например, с маршрутом:

/album[/:action][/:id][/:page] 

идентификатор и страницы не являются обязательными, и оба могут быть целые числа

если мы пытаемся соответствовать этому маршруту:

/album/index/99

99 может совпадать с идентификатором, со страницей не присутствующей, или также с страницей, с отсутствующим идентификатором. Невозможно узнать, что есть, поэтому это не сработает.

Вы можете добавить в идентификаторе, что-то вроде этого:

/album[/:action][/id/:id][/:page] 

так, то вы бы буквальным там, чтобы убедиться, что вы знаете, что это идентификатор:

/album/index/id/99 # :id = 99 

или /альбом/index/99 #: page = 99

+0

Excelent !. U рок! –