Zend framework 2 маршрутизация указывает больше разделителей


Веб-сайт Zend предполагает, что я могу сопоставить всю строку с разделителями url в ней ( " / " ) одному url-параму в маршрутизаторе zend: Zend Framework 2-Маршрутизатор

Поэтому я создал этот маршрут:

'myRoute' => array (
        'type' => 'segment',
        'options' => array (
                'route' => '/someAction/:params{-}',
                'defaults' => array (
                        'controller' => 'ApplicationControllermyController',
                        'action' => 'someAction'
                )
        ),
        'may_terminate' => true,
),

Поскольку это дочерний маршрут /myController, теперь я могу вызвать: http://myHost/myController/someAction/someParam1(someValue)/bookingCode(X79P00A3CB0002:000000010000000D000C80F601D))

Это приводит к одному параметру маршрута, называемому "params" , который я могу затем проанализирую и взорвусь сам.

Это работает для URL, указанного выше, но не для этого URL: http://myHost/myController/someAction/someParam1(someValue)/bookingCode(aclGWciSaclGWciSaclGWciSmZmSaclsz1tf9ktsudlgwcisacl1ejlyejl3edlwwyquhelc_iuexcisyjnsudl1ejlyejlyedlw9kuywsq4kto0ielyrevsaclwwcmsadlywytilevsmuroxymsekq-2-)

В настоящее время я думаю, что я либо ограничен ограничением длины сегмента URL, но я не получаю подобной ошибки. Зенд просто отвечает "Запрошенная страница не разрешима".

Или я не понимаю"/: params { -} " часть моего маршрута.

Может ли кто-нибудь объяснить или предложить решение?

* правка 1: Таким образом, я обнаружил, что символы "-" во втором URL-адресе являются проблемой, хотя я не понимаю, почему. Если я удаляю их из URL, маршрутизация работает нормально.

1 2

1 ответ:

Главной проблемой, по-видимому, был дефис в url. Я изменил свой маршрут с типа сегмента, чтобы решить эту проблему. Новый маршрут выглядит следующим образом:

'myRoute' => array (
    'type' => 'Zend\Mvc\Router\Http\Regex',
    'options' => array(
        'regex' => '/someAction/(?<params>[a-zA-Z0-9():/_-]*)',
        'defaults' => array(
            'controller' => 'Application\Controller\myController',
            'action' => 'someAction',
        ),
        'spec' => '/myController/%params%',
    ),
        'may_terminate' => true,
),

Я не знаю, почему дефис является проблемой. Так что если кто-то может уточнить, я с удовольствием отмечу как ответ!