Предполагается, что мое приложение обработает 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. Как я могу обойти это?
Вам необходимо удалить [?:IDUsuario]
и соответствующее ему ограничение с вашего маршрута. ZF2 действительно не обрабатывает параметры запроса в маршрутах. Раньше это было, но с тех пор оно устарело.
Вместо этого в вашем контроллере вам просто нужно вызвать $this->params()->fromQuery()
который вернет массив всех параметров запроса, добавленных в URL.