我需要获取配置变量并仅为会话更改它 我有这个观察者,我已经设法通过setNode更改变量。如果在下一行中我使用getNode()验证其值,则值已正确更改。 但是后来在其他视图中我检查Mage :: getStoreConfig('oi_options / messages / active')并且它似乎再次为0。如你所见,我把cleanCache()和reinit()。我试过他们两个,每一个都是孤立的。 另外,我在xml布局中使用了一些ifconfig语句来检查这个变量,以便确定是否显示几个块而且它也不起作用。 有什么建议吗?
class Oi_Vendedor_Model_Observer {
const RETAILER = 3;
public function checkVendedor(Varien_Event_Observer $observer) {
$customerGroup = Mage::getSingleton('customer/session')->getCustomerGroupId();
if(($customerGroup == self::RETAILER) && (Mage::getStoreConfig('oi_options/messages/active') == 0))
{
Mage::getConfig()->setNode('default/oi_options/messages/active',1);
Mage::getConfig()->cleanCache();
Mage::getConfig()->reinit();
}
return $this;
}
}
提前致谢
答案 0 :(得分:1)
实际上有一种简单的方法可以做到。
假设我在数据库中将值'my/config/key'
设置为1
。
在某些事件之后,我以这种方式将值设置为0
:
Mage::app()->getStore()->setConfig('my/config/key', 0);
然后访问此值将返回0
,直到脚本执行结束:
Mage::getStoreConfig('my/config/key'); //return 0
但是,数据库中的值仍为1
。
我没有在会话中使用该解决方案,因为我需要它来影响XML布局中的ifconfig。
答案 1 :(得分:0)
@Ben这正是我想要完成的。为了保持这种伪状态持久性,我最终做的是加载一个具有我需要检查的值的个人会话变量。我认为有一种方法可以保持后端配置变量可以从会话中访问,并最终动态地改变它们的值,就像对象自然起作用一样。 我的意思是,也要在会话中保留管理员信息。我找不到办法,所以我不得不去个人会话变量选项。 顺便说一句,它现在就像魅力一样。感谢您的评论。