Почему Magento пытается вызвать пространство имен Mage, а не мое собственное пространство имен? - PullRequest
9 голосов
/ 28 января 2010

Я создал модуль в локальной папке с кодом в нашем пользовательском пространстве имен. Блок не отображается на веб-интерфейсе, и при проверке журнала исключений выясняется, что Magento смотрит не в том месте.

exception ‘Mage_Core_Exception’ with message ‘Invalid block type:
Mage_MyCompany_ForthcomingProducts_Block_List’
in /var/www/html/app/Mage.php:407

То же самое происходит, если я исключаю префикс MyCompany_ при вызове блока; это все еще выглядит в пространстве имен Мага. У меня это есть в файле с именем MyCompany_All.xml в папке модулей, и добавленные мной макеты CMS работают нормально, поэтому Magento определенно загружает их: * +1007 *

У кого-нибудь есть идеи относительно того, что вызывает это? <ч /> Добавлено: Блок вызывается статическим блоком с этим шаблоном кода:

{{block type="MyCompany_ForthcomingProducts/List" template="forthcomingproducts/list.phtml"}}

И config.xml для блока:

<?xml version="1.0" encoding="utf-8"?>
    <config>
        <modules>
            <MyCompany_ForthcomingProducts>
                <version>0.9</version>
            </MyCompany_ForthcomingProducts>
        </modules>

        <global>
            <blocks>
                <forthcomingproducts>
                    <class>MyCompany_ForthcomingProducts_Block</class>
                </forthcomingproducts>
            </blocks>
       </global>
    </config>

1 Ответ

8 голосов
/ 28 января 2010

Попробуйте настроить объявление блока следующим образом:

{{block type="forthcomingproducts/list" template="forthcomingproducts/list.phtml"}}

В вашем конфигурационном файле вы определили псевдоним для ваших блоков (forthcomingproducts), и теперь вы должны следовать ему. Magento разыменует forthcomingproducts как MyCompany_ForthcomingProducts_Block, как вы и просили, затем добавьте заглавное имя класса (list), создав имя класса MyCompany_ForthcomingProducts_Block_List. Когда вы используете псевдоним, о котором Magento не знает (MyCompany_ForthcomingProducts в вашем примере), он считается частью пространства имен Mage.

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

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