Intereting Posts
Странная доктрина EntityNotFoundException Как получить доступ к стандартным данным сеанса PHP изнутри CodeIgniter Как преобразовать строку, которая выглядит как шестнадцатеричный номер, в фактический шестнадцатеричный номер в php? Создание защищенного паролем Zip-файла с использованием PHP в Windows Избегайте условий гонки в PHP на отправке: Пожалуйста, не нажимайте кнопку «Отправить» более одного раза! Вывод строки из командной строки Windows из PHP WAMP, Laravel 5: Маршруты не работают – NotFoundHttpException SQLSTATE : Общая ошибка: 1005 Не удается создать таблицу – Laravel 4 Ошибка при монтировании через php "exec" Как выделить изменения / различия в одном текстовом абзаце другого? Как вы создаете RSS-канал? как я могу читать файлы редактирования pptx / docx / xlsx с помощью PHP? json_decode возвращает NULL в строке, прошедшей через шифрование Ошибка анализа: синтаксическая ошибка, неожиданный T_SL в строке 23 Отобразить последнюю ленту новостей Twitter «дата создана» с использованием tmhOAuth и PHP

Клиент / сессия Magento не работает

Эта проблема впервые появилась в осознании, поскольку страница истории заказов (* / sales / order / history /) в интерфейсе не отображала ничего, кроме короткого сообщения: вы не указали никаких заказов.

После некоторой отладки выясняется, что проблема заключается в этой функции:

Mage::getSingleton('customer/session') 

Он не возвращает объект сеанса, содержащий информацию текущего клиента, кроме идентификатора веб-сайта, поэтому коллекция заказов возвращает пустой результат после фильтрации на идентификаторе клиента.

В Stack Overflow есть столбец, в котором обсуждается аналогичная проблема: сеанс клиента отличается в разных частях веб-сайта Magento . Но он не дал хорошего объяснения.

И что сбивает с толку, так это то, что в моем случае функция работает хорошо в некоторых частях, но не в других. Например, я вставил

 <?php echo var_export(Mage::getSingleton('customer/session')->getCustomerId(), true) ?> 

в шаблон списка продуктов каталога и отображает идентификатор клиента после входа в систему. Но та же строка возвращает Null на странице истории заказов.

Я нашел эти коды в app / code / core / Mage / Customer / Model / Session.php

 public function getCustomer() { ... $customer = Mage::getModel('customer/customer') ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()); if ($this->getId()) { $customer->load($this->getId()); } $this->setCustomer($customer); return $this->_customer; } на public function getCustomer() { ... $customer = Mage::getModel('customer/customer') ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()); if ($this->getId()) { $customer->load($this->getId()); } $this->setCustomer($customer); return $this->_customer; } 

После установки идентификатора сайта он загружает объект клиента в зависимости от $ this-> getId ().

Почему атрибут «id» объекта сеанса клиента не всегда действителен? Может кто-то поделиться своими знаниями, пожалуйста. Большое спасибо.