Mat*_*ann 97 php file-upload zend-route zend-framework2
如何在zf2中获取与页面请求相关的各种参数?与发布/获取参数一样,正在访问的路由,发送的标头和上载的文件.
Mat*_*ann 203
最简单的方法是使用beta5中引入的Params插件.它具有实用方法,可以轻松访问不同类型的参数.与往常一样,阅读测试对于理解应该如何使用某些内容非常有价值.
要获取控制器中命名参数的值,您需要为要查找的参数类型选择适当的方法并传入名称.
$this->params()->fromPost('paramname'); // From POST
$this->params()->fromQuery('paramname'); // From GET
$this->params()->fromRoute('paramname'); // From RouteMatch
$this->params()->fromHeader('paramname'); // From header
$this->params()->fromFiles('paramname'); // From file being uploaded
Run Code Online (Sandbox Code Playgroud)
所有这些方法还支持在没有找到具有给定名称的参数时将返回的默认值.
$orderBy = $this->params()->fromQuery('orderby', 'name');
Run Code Online (Sandbox Code Playgroud)
访问http://example.com/?orderby=birthdate时,
$ orderBy将具有生日值.
访问http://example.com/时,
$ orderBy将具有默认值名称.
要获取一种类型的所有参数,只是不要传入任何内容,Params插件将返回一个值为数组的值作为键.
$allGetValues = $this->params()->fromQuery(); // empty method call
Run Code Online (Sandbox Code Playgroud)
访问http://example.com/?orderby=birthdate&filter=hasphone时, allGetValues将是一个类似的数组
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
Run Code Online (Sandbox Code Playgroud)
如果你检查Params插件的源代码,你会发现它只是一个围绕其他控制器的薄包装器,以允许更一致的参数检索.如果您出于某种原因想要/需要直接访问它们,您可以在源代码中看到它是如何完成的.
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用超级全局$ _GET,$ _POST等,但不鼓励这样做.