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



我的应用程序预计将处理从第三方应用程序发送的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' => 'AdministrativoControllerUsuario',
                    'action' => 'index'
                )
            ),
        ),

现在,问题是我的应用程序没有"看到"通过URL传递的变量。当我尝试使用:$ this -> getEvent()——> getRouteMatch()——> getParams ();我就得到这样一个字符串Array (3) {["controller"]=> string(33)"AdministrativoController Usuario" ["action"]=> string(5)"index" ["login"]=> string(5)"登录"}

不识别变量IDUsuario。我怎么才能避开这个问题呢?

您需要从路由中删除[?:IDUsuario]及其相应的约束。ZF2并不真正处理路由中的查询参数。

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

最新更新