如何设置zend 2路由以期望传递某些get变量?

时间:2015-08-25 13:28:33

标签: php zend-framework2 url-routing

我的应用预计会处理从第三方应用发送的带有一些变量的网址,即:'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。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:2)

您需要从路线中移除[?:IDUsuario]及其相应的约束。 ZF2并不真正处理路由中的查询参数。它曾经,但从那时起deprecated

相反,在您的控制器中,您只需要调用$this->params()->fromQuery(),它将返回附加到URL上的所有查询参数的数组。