Сеанс клиента отличается в разных частях сайта Magento - PullRequest
1 голос
/ 18 января 2011

У меня есть функция внутри Помощника в Magento, которая возвращает, равен ли атрибут клиента единице.

Вот мой класс Помощника

class Nie_Nie_Helper_Data extends Mage_Core_Helper_Abstract {
    public function isNieAdmin() {
        if(Mage::getSingleton('customer/session')->getCustomer()->getNieAdmin() == 1) {
            return true;
        } else {
            return false;
        }
    }
}

Теперь, когда я вызываю эту функциюиз класса, который расширяет Mage_Core_Block_Template, кажется, все работает нормально.Однако, когда я пытаюсь использовать это внутри одного из моих контроллеров, это не работает.Фактически, когда я делаю Mage::getSingleton('customer/session')->getCustomer()->debug(), единственная возвращаемая переменная - это website_id.

Кто-нибудь знает, что я должен сделать, чтобы заставить это работать?

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Хорошо, похоже, мне пришлось загружать сессию самостоятельно.Мне пришлось добавить в мои функции следующее:

Mage::getSingleton('core/session', array('name' => 'frontend'));

Надеюсь, это поможет.

2 голосов
/ 18 января 2011

Во время контроллера объекты сеанса еще не инициализированы (хотя переменная сеанса должна быть), поэтому он возвращает пустую модель. Я предполагаю, что website_id намеренно установлен при создании объекта клиента, чтобы действовать по умолчанию.

Вы можете получить доступ к $_SESSION['customer'] напрямую, чтобы найти то, что вам нужно, но это грязно. В качестве альтернативы можно сделать то, что вы хотите, в случае события, которое произойдет позже.

Я надеюсь, что кто-то может придумать лучший ответ, чем мой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...