zf2中如何获取页面请求相关的各种参数?像 post/get 参数、被访问的路由、发送的 headers 和上传的文件。
最佳答案
最简单的方法是使用 Params plugin ,在 beta5 中引入。它具有实用方法,可以轻松访问不同类型的参数。一如既往,阅读 the tests可以证明对了解应该如何使用某些东西很有值(value)。
获取单个值
要获取 Controller 中命名参数的值,您需要为要查找的参数类型选择适当的方法并传入名称。
示例:
$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
默认值
所有这些方法还支持在没有找到具有给定名称的参数时返回的默认值。
示例:
$orderBy = $this->params()->fromQuery('orderby', 'name');
访问时 http://example.com/?orderby=birthdate ,
$orderBy 的值为 birthdate。
访问时http://example.com/ ,
$orderBy 将具有 默认 值 name。
获取所有参数
要获取一种类型的所有参数,不要传入任何内容,Params 插件将返回一个值数组,其名称作为键。
示例:
$allGetValues = $this->params()->fromQuery(); // empty method call
访问时 http://example.com/?orderby=birthdate&filter=hasphone $allGetValues 将是一个类似
的数组array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
不使用 Params 插件
如果您查看 source code对于 Params 插件,您将看到它只是对其他 Controller 的一个薄包装,以允许更一致的参数检索。如果您出于某种原因想要/需要直接访问它们,您可以在源代码中查看它是如何完成的。
示例:
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
注意:您可以使用超全局变量 $_GET、$_POST 等,但不鼓励这样做。
关于php - Zend Framework 2中如何访问route、post、get等参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077126/