我正在尝试设置会话变量,以便每个会话仅出现一次弹出框。
为此,我创建了一个在有人关闭弹出窗口时通过 AJAX 调用的模块。模块的控制器设置一个会话变量。控制器如下所示:
class Company_Popup_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
Mage::getSingleton('core/session')->setNewsletterPopup('yes');
}
}
超级简单。
然后,在该块中,我检查是否设置了会话变量(或者用户是否已登录):
class Company_Popup_Block_Popup extends Mage_Core_Block_Template
{
public function displayPopup(){
if(!$this->helper('customer')->isLoggedIn() && Mage::getSingleton('core/session')->getNewsletterPopup() == null){
return true;
}
else{
return false;
}
}
public function getSessionData(){
return Mage::getSingleton('core/session');
}
}
然后模板文件调用 displayPopup 方法并显示或不显示时事通讯弹出窗口。
这一切都很完美......直到我打开缓存,此时会话变量没有设置或至少在块/模板文件中不可访问。
我在这里错过了什么?