我的应用程序预计将处理从第三方应用程序发送的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的所有查询参数的数组。