Symfony:从模型中设置cookie?

时间:2011-06-28 04:14:46

标签: cookies symfony1 model

是否可以从模型层设置(或检索)cookie?

假设模型层用于“业务逻辑”,我需要的逻辑需要与请求和响应进行一点点交互。

2 个答案:

答案 0 :(得分:6)

我建议您在模型中处理和存储您的Cookie值:

class ModelTable
{
  protected $cookie = null;

  public function getCookie()
  {
    return $this->cookie;
  }

  public function setCookie($value)
  {
    $this->cookie = $value;
  }
}

并使用postExecute操作来设置cookie:

class yourActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    ModelTable::getInstance()->setCookie('bla');
  }

  public function postExecute()
  {
    $cookie = ModelTable::getInstance()->getCookie();
    $this->getResponse()->setCookie('name', $cookie, time() + 24 * 3600);
  }
}

坚持使用MVC模型总是更好:控制器调用信息模型并构建响应,而不是相反。

答案 1 :(得分:1)

您始终可以使用sfContext::getInstance()->getResponse()获取sfWebResponse的实例。在该实例上,您可以调用setCookie()方法。 (或直接链接)。

但要注意:你永远不会确定cookie是否已经设置(取决于控制器中的动作),所以也许有更好的设计?