为什么Magento试图调用Mage命名空间而不是我的自定义命名空间?

Ric*_*ohn 9 php magento

我在自定义命名空间的本地代码文件夹中创建了一个模块.该块未在前端显示,并且在检查异常日志时,事实证明Magento正在查找错误的位置.

exception ‘Mage_Core_Exception’ with message ‘Invalid block type:
Mage_MyCompany_ForthcomingProducts_Block_List’
in /var/www/html/app/Mage.php:407
Run Code Online (Sandbox Code Playgroud)

如果我在调用块时排除MyCompany_前缀也是如此; 它仍然在Mage命名空间中查找.我在modules文件夹中名为MyCompany_All.xml的文件中有这个,我添加的CMS布局工作正常,所以Magento肯定加载它:

<?xml version="1.0"?>
<config>
    <modules>
        <MyCompany_CmsLayouts>
            <codePool>local</codePool>
            <active>true</active>
        </MyCompany_CmsLayouts>
        <MyCompany_ForthcomingProducts>
            <codePool>local</codePool>
            <active>true</active>
        </MyCompany_ForthcomingProducts>
    </modules>
</config>
Run Code Online (Sandbox Code Playgroud)

有没有人对这是什么造成的?


补充:该模块代码通过静态块调用该块:

{{block type="MyCompany_ForthcomingProducts/List" template="forthcomingproducts/list.phtml"}}
Run Code Online (Sandbox Code Playgroud)

该块的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>
Run Code Online (Sandbox Code Playgroud)

Jos*_*tey 8

尝试按如下方式调整块声明:

{{block type="forthcomingproducts/list" template="forthcomingproducts/list.phtml"}}
Run Code Online (Sandbox Code Playgroud)

在配置文件中,您为块(forthcomingproducts)定义了别名,现在您应该遵循它.Magento的将取消引用forthcomingproductsMyCompany_ForthcomingProducts_Block为你的要求,那么追加资本类名(list),创建类名MyCompany_ForthcomingProducts_Block_List.当您使用Magento不知道的alis时(MyCompany_ForthcomingProducts在您的示例中),它被假定为Mage名称空间的一部分.

希望有所帮助,乔