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 ответ:
Главной проблемой, по-видимому, был дефис в 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, ),
Я не знаю, почему дефис является проблемой. Так что если кто-то может уточнить, я с удовольствием отмечу как ответ!