【发布时间】:2012-12-30 19:33:01
【问题描述】:
在 Zend Framework 2 中,我想在同一个控制器中将一组参数从一个动作传递到另一个动作,就像我在 ZF1 中以下列方式所做的那样:
$this->_helper->redirector->gotoSimple('foo', null, null, $params);
在 fooAction 中:
$params = $this->_request->getParams();
在 ZF2 中,尝试了我在这里看到的各种答案,我想出了以下内容:
$this->redirect()->toRoute('home/default', array(
'controller' => 'client',
'action' => 'foo',
'param' => 'bar'),
array('param' => 'bar'));
(尝试 toRoute() 的 $params 和 $options 参数)
在 fooAction 中:
$param = $this->getEvent()->getRouteMatch()->getParams();
或
$param = $this->params()->fromRoute());
没有一个适合我。有没有一种简单的方法来实现我想要的(通过重定向传递参数)或者我应该走使用容器、会话甚至全局变量的路线?
【问题讨论】:
-
这应该可以很好地工作,您确定您的路线设置正确吗?您是否确保您的控制器实现 InjectApplicationEvent(或扩展提供的 ZF2 Abstract 控制器)
-
不,我的路由中没有设置参数。如果我这样做,它确实有效。但这意味着我必须使用参数为每个单独的操作设置路线。 ZF1 的美妙之处在于,您可以使用 one for all(段)路由并在控制器中设置单独的参数。
-
但是您使用的是 toRoute(),显然这需要使用路由;)
-
如果您想将参数作为查询字符串传递,这是您的答案stackoverflow.com/a/15422349/1154069。要在控制器中访问,请使用 $this->params()->fromQuery('paramName');
-
@Andrew:是的,这是真正的问题,请参阅下面的答案。
标签: redirect parameters controller action zend-framework2