Сериализация не разрешена в Magento? - PullRequest
5 голосов
/ 21 июня 2011

Когда я включаю кеш в Magento, я получаю следующее исключение:

Сериализация 'Mage_Core_Model_Layout_Element' не разрешена

Исключение происходит в app/code/core/Mage/Page/Block/Template/Links.php, в строке:

return parent::getCacheKeyInfo() + array(
            'links' => base64_encode(serialize($links)),
            'name' => $this->getNameInLayout()
        )

Я использую Magento Enterprise 1.10 и PHP 5.3.

Может кто-нибудь сказать мне, в чем проблема?

Ответы [ 4 ]

8 голосов
/ 30 августа 2011

В вашем файле макета не должно быть пустых тегов after_text или before_text. Если вам это не нужно, просто удалите тег.

Если это не поможет, выведите переменную $links перед 150-й строкой в ​​файле app / code / core / Mage / Page / Block / Template / Links.php, и вы увидите массив с массивами внутри. , Все ключи и значения должны быть строками или целыми числами, а не объектами. Ключ значения массива, который является объектом, сообщит вам, какой тег удалить из файла макета.

1 голос
/ 11 сентября 2015

Круто @vsushkov.

Я использовал: try{ serialize($links); } catch(Exception $e){ Mage::log($links); die; } чтобы выяснить точный макет, где у нас были эти пустые теги, и после удаления этих пустых тегов она исправила проблему, а затем удалила приведенный выше код: -)

0 голосов
/ 27 сентября 2017

Эта проблема возникла у меня при попытке сериализации категорий после вызова функции getCategoryUrl после копания. Я обнаружил, что этот объект _urlModel не может быть сериализован, так как содержит Mage_Core_Model_Layout_Element , поэтому досериализация объекта проверяет, есть ли у него свойство _urlModel

enter image description here

0 голосов
/ 15 сентября 2015

Увидел эту проблему на сайте клиентов. Ни одно из приведенных выше решений не помогло мне. После долгих поисков ошибки, похоже, она связана с темами / расширениями JM или JoomlArt. Код крайне плохо написан. Например, некоторые из вещей, которые вы найдете в этих темах: Объявление классов php внутри шаблонов, Установка глобальных переменных внутри шаблонов, Установка данных в суперглобалы из шаблонов, Предоставление файла перевода, но не завершение большинства текстовых строк в шаблоне в функции перевода

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

Я нашел свою проблему в app / design / frontend / default / jm_adamite / template / catalog / navigation / tops.phtml Была строка, устанавливающая $ this в $ _SESSION. Я закомментировал это, и ошибка ушла. Больше ничего не казалось сломанным. У grep для этой переменной, используемой где-либо еще, было 0 результатов. Если у вас установлено одно из этих расширений JM или вы используете одну из их тем, я подозреваю, что сначала Удачи

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