ExpressionEngine -> Может включать код Magento в один шаблон, но не в другой - PullRequest
0 голосов
/ 01 декабря 2011

Мы используем Magento в сочетании с EE для нашего сайта.В одном из моих шаблонов у меня есть этот код для загрузки объектной модели Magento, которая будет использоваться в шаблоне:

include_once($_SERVER['DOCUMENT_ROOT']  . '/store/app/Mage.php');
Mage::app(); 

Шаблон загружается нормально, и код работает.

Но если явключить точно такой же код в другой шаблон, я получаю это:

Fatal error: Uncaught exception 'Exception' with message 'Warning: include(Query.php): 
 failed to open stream: 
 No such file or directory in /srv/www/htdocs/store/lib/Varien/Autoload.php on line 93' in /srv/www/htdocs/store/app/code/core/Mage/Core/functions.php:245 

Stack trace: 
#0 /srv/www/htdocs/store/lib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(Query.p...', '/srv/www/htdocs...', 93, Array) 
#1 /srv/www/htdocs/store/lib/Varien/Autoload.php(93): Varien_Autoload::autoload() 
#2 [internal function]: Varien_Autoload->autoload('query') 
#3 [internal function]: spl_autoload_call('query') 
#4 /srv/www/htdocs/na_cms/expressionengine/libraries/Template.php(1089): class_exists('query') 
#5 /srv/www/htdocs/na_cms/expressionengine/libraries/Template.php(968): EE_Template->process_tags() 
#6 /srv/www/htdocs/na_cms/expressionengine/libraries/Template.php(497): EE_Template->tags() 
#7 /srv/www/htdocs/na_cms/expressionengine/libraries/Template.php(248): EE_Template->parse('?? 

Эти шаблоны НЕ являются вложенными.

Есть идеи, почему это происходит и как это исправить?

1 Ответ

2 голосов
/ 01 декабря 2011

В какой-то момент в вашем коде или коде EE вы пытаетесь использовать класс с именем "Query". Этот класс не определен, поэтому PHP пытается использовать механизм автозагрузчика для загрузки класса Query.

Приведенный выше код указывает, что автозагрузка Magento пытается загрузить класс Query. Это терпит неудачу (поскольку класс не является классом Magento). Кроме того, кажется, что вы находитесь в режиме разработчика Magento, где все уведомления и предупреждения превращаются в исключения. Поскольку автозагрузка завершается с предупреждением, возникает фатальное исключение.

Итак, проблема может быть в двух вещах. Во-первых, кто-то пытается создать экземпляр несуществующего класса Query. Если это так, прекратите это делать.

Во-вторых, класс Query существует, но автозагрузчик EE никогда не имеет возможности загрузить его, потому что автозагрузка Magento пытается первой. Если это так, вам нужно вставить где-нибудь код, который переключает автозагрузчики, чтобы изменить их порядок. Вы также можете попробовать вручную включить класс Query, чтобы исправить этот конкретный экземпляр.

...