我的应用预计会处理从第三方应用发送的带有一些变量的网址,即:'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传递的变量。当我尝试去使用params: $这 - > getEvent() - > getRouteMatch() - > getParams()方法; 我只是得到一个字符串: array(3){[“controller”] => string(33)“Administrativo \ Controller \ Usuario”[“action”] => string(5)“index”[“login”] => string(5)“login”}
它无法识别变量IDUsuario。我怎么能绕过这个?
答案 0 :(得分:2)
您需要从路线中移除[?:IDUsuario]
及其相应的约束。 ZF2并不真正处理路由中的查询参数。它曾经,但从那时起deprecated。
相反,在您的控制器中,您只需要调用$this->params()->fromQuery()
,它将返回附加到URL上的所有查询参数的数组。