Как изменить переменные конфигурации только во время сеанса - PullRequest
0 голосов
/ 16 марта 2012

Мне нужно получить переменную конфигурации и изменить ее только для сеанса. У меня есть этот Обозреватель, и мне удалось изменить переменную через setNode.Если в следующей строке я проверяю его значение с помощью getNode (), значение изменилось правильно.Однако позже в других представлениях я проверяю Mage :: getStoreConfig ('oi_options / messages / active'), и кажется, что он снова имеет 0.Как видите, я поставил cleanCache () и reinit ().Я пробовал с ними обоими и с каждым из них по отдельности.Кроме того, я использую несколько операторов ifconfig в макетах xml для проверки этой переменной, чтобы определить, отображать ли несколько блоков, и она также не работает.Есть предложения?

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;
}

}

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 18 сентября 2014

На самом деле есть простой способ сделать это.

Допустим, в базе данных значение 'my/config/key' установлено на 1.

После некоторого события я установил значение 0 таким образом:

Mage::app()->getStore()->setConfig('my/config/key', 0);

Тогда обращение к этому значению вернет 0 до конца выполнения скрипта:

Mage::getStoreConfig('my/config/key'); //return 0

Однако значение в базе данных по-прежнему 1.

Я не использовал решение с сеансом, потому что мне было нужно, чтобы оно влияло на ifconfig в макетах XML.

0 голосов
/ 27 марта 2012

@ Бен Это именно то, чего я хотел достичь. Что я наконец-то сделал, чтобы сохранить эту устойчивость псевдо-состояния, - загрузить личную переменную сеанса со значением, которое мне нужно было проверить. Я подумал, что есть способ сохранить переменные бэкэнд-конфигурации доступными из сессии и в конечном итоге изменить их значение на лету, как объекты естественным образом работают. Я имею в виду, сохранить информацию администратора в сессии. Я не мог найти способ сделать это, поэтому мне пришлось пойти на вариант персональной переменной сеанса. Кстати, теперь это работает как шарм. Спасибо за ваши комментарии, ребята.

...