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

How to setup zend 2 routing to expect certain get variables to be passed?

我的应用程序需要处理从第 3 方应用程序发送的 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'
                )
            ),
        ),

现在,问题是我的应用程序没有 'seeing' 通过 URL 传递的变量。当我尝试使用以下方法获取参数时: $this->getEvent()->getRouteMatch()->getParams(); 我只是得到一个像这样的字符串: 数组(3) { ["controller"]=> 字符串(33) "Administrativo\Controller \Usuario" ["action"]=> 字符串(5) "index" ["login"]=>字符串(5) "login" }

无法识别变量 IDUsuario。我该如何解决这个问题?

您需要从路线中删除 [?:IDUsuario] 及其相应的限制条件。 ZF2 并不真正处理路由中的查询参数。以前是,但后来 deprecated.

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