是否可以从模型层设置(或检索)cookie?
假设模型层用于“业务逻辑”,我需要的逻辑需要与请求和响应进行一点点交互。
答案 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是否已经设置(取决于控制器中的动作),所以也许有更好的设计?