如何将数据从过滤器传递给动作?

时间:2013-02-18 16:17:18

标签: php symfony-1.4

我们假设这个过滤器:

public function execute ($filterChain)
{
    if ($this->isFirstCall())
    {
        $loggeduser = array();
        .
        .
        .
        $this->getContext()->getResponse()->setSlot ('loggeduser', $loggeduser);
    }
}

我想将此loggeduser数组传递给每个操作,甚至是ajax操作。此变量存储记录的用户信息。 get_slot();函数不起作用。怎么解决这个?此时不得使用会话。

2 个答案:

答案 0 :(得分:4)

这应该有效:

$this->getContext()->getRequest()->setParameter('loggeduser', $loggeduser);

答案 1 :(得分:0)

getSlot()上没有sfWebResponse方法,但有getSlots(),因此您可以检索已传递给响应的所有广告位的数组。

在任何控制器中:

$slots = $this->getResponse()->getSlots();
print_r($slots['loggeduser']);

@Vlad Jula-Nedelcu所述,如果您不想使用会话并且确实只需要在一个脚本运行中的控制器之间传递变量,则可以在sfContext中保留的任何对象上设置属性。

不幸的是在Sf 1.4中。你无法将自己的对象添加到sfContext中,你必须使用那些已经存在的对象。