最简单的方法是使用参数插件,在 beta5 中引入。它具有实用方法,可以轻松访问不同类型的参数。一如既往,读书测试对于理解某物应该如何使用来说可以证明是有价值的。
获取单个值
要获取控制器中命名参数的值,您需要为要查找的参数类型选择适当的方法并传入名称。
例子:
$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
默认值
所有这些方法还支持默认值,如果未找到具有给定名称的参数,则将返回默认值。
Example:
$orderBy = $this->params()->fromQuery('orderby', 'name');
参观时http://example.com/?orderby=birthdate,
$orderBy将会有价值出生日期.
参观时http://example.com/,
$orderBy将有default value name.
获取所有参数
要获取一种类型的所有参数,只需不要传入任何内容,Params 插件将返回一个值数组,其名称作为键。
Example:
$allGetValues = $this->params()->fromQuery(); // empty method call
参观时 $allGetValues将是一个像这样的数组
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
不使用 Params 插件
如果您检查源代码对于 Params 插件,您会发现它只是其他控制器的一个薄包装,以允许更一致的参数检索。如果您出于某种原因想要/需要直接访问它们,您可以在源代码中查看它是如何完成的。
Example:
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
NOTE:您可以使用超全局变量 $_GET、$_POST 等,但不鼓励这样做。