最简单的方法是使用在beta5中引入的
Params plugin。它具有实用程序方法,以便于访问不同类型的参数。和往常一样,阅读
the tests可以证明有价值,以了解应该如何使用东西。
获取单个值
要获取控制器中命名参数的值,您需要为您正在查找的参数类型选择适当的方法,并传入名称。
例子:
$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');
获取所有参数
要获得一个类型的所有参数,只是不传入任何东西,Params插件将返回一个值为数组,其名称为键。
例:
$allGetValues = $this->params()->fromQuery(); // empty method call
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
不使用Params插件
如果你检查source code的Params插件,你会看到它只是一个薄的包装其他控制器,允许更一致的参数检索。如果由于某种原因需要/需要直接访问它们,您可以在源代码中看到它是如何完成的。
例:
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
注意:你可以使用superglobals $ _GET,$ _POST等,但是不鼓励。