为什么这个symfony代码不起作用?

时间:2010-06-17 10:08:33

标签: php symfony1

我正在尝试将参数从一个动作(foo)传递到另一个动作(foobar)。

在动作foo中,我设置了这样的参数:

$request->getParameterHolder()->set('arg1', 'alice');
$request->getParameterHolder()->set('arg2', 'bob');

在行动中,我试图检索这些参数:

$arg1 = $request->getParameter('arg1');
$arg2 = $request->getParameter('arg2');

$this->forward404Unless($arg1 && $arg2); //always forwarded

注意:我知道我可以将params保存到用户会话变量中 - 但我不想这样做。我想将它们作为参数传递 - 任何想法如何使其工作?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

    $this->redirect('module/action2?'.
      http_build_query(array("arg1"=> "alice", "arg2"=>"bob")));

答案 1 :(得分:1)

greg0ire的回答听起来就像你要求的那样但是如果传递查询字符串参数不是一个硬性要求,还有其他一些方法值得关注。

如果你想在fooo之后执行foobar动作,你可以使用forward。与重定向不同,它将存在于同一个请求周期中,因此您可以在不触及会话的情况下传递变量。

你没有说为什么你不想使用这个会话,但Symfony有一个中途的房子:flash attributes。这些存储在会话中,但保证不会超出下一个请求,这可能是一个合适的妥协。