Как настроить маршрутизацию Zend 2 для ожидания передачи определенных переменных get?

1

Предполагается, что мое приложение обработает URL-адрес, отправленный из стороннего приложения, с некоторыми переменными, например: "www.example.com/user/login?IDUsuario=500". Я настроил свой маршрут таким образом:

'usuario' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/usuario[/:login][?:IDUsuario]',
                'constraints' => array(
                    'login' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'IDUsuario' => '[a-zA-Z][a-zA-Z0-9_-]*'
                ),
                'defaults' => array(
                    'controller' => 'Administrativo\Controller\Usuario',
                    'action' => 'index'
                )
            ),
        ),

Теперь проблема в том, что мое приложение не "видит" переменные, прошедшие через URL. Когда я пытаюсь получить параметры, используйте: $this-> getEvent() → getRouteMatch() → getParams(); Я просто получаю строку вроде: array (3) {["controller"] => string (33) "Administrativo\Controller\Usuario" ["action"] => string (5) "index" ["login"] => string (5) "login"}

Он не распознает переменную IDUsuario. Как я могу обойти это?

Теги:
url-routing
zend-framework2

1 ответ

2
Лучший ответ

Вам необходимо удалить [?:IDUsuario] и соответствующее ему ограничение с вашего маршрута. ZF2 действительно не обрабатывает параметры запроса в маршрутах. Раньше это было, но с тех пор оно устарело.

Вместо этого в вашем контроллере вам просто нужно вызвать $this->params()->fromQuery() который вернет массив всех параметров запроса, добавленных в URL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню