0

让我们假设这个过滤器:

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

我想将此记录的用户数组传递给每个操作,甚至传递给 ajax 操作。此变量存储记录的用户信息。该get_slot();功能不起作用。如何解决这个问题?这次一定不能使用会话。

4

2 回答 2

4

这应该有效:

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

于 2013-02-18T18:54:45.970 回答
0

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

在任何控制器中:

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

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

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

于 2013-02-20T19:32:54.220 回答