【问题标题】:Why is Magento trying to call in the Mage namespace rather than my custom namespace?为什么 Magento 试图调用 Mage 命名空间而不是我的自定义命名空间?
【发布时间】:2010-01-28 14:13:23
【问题描述】:

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

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

如果我在调用块时排除 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>

有人对造成这种情况的原因有任何想法吗?


补充:这个块被一个带有这个模板代码的静态块调用:
{{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>

【问题讨论】:

  • 我认为调用这个块的 layout.xml 或代码是相关的地方。为了诊断,我想看看那个,也许还有相关块的 config.xml。
  • 非常感谢您的回复,我已将信息添加到问题中。

标签: php magento


【解决方案1】:

尝试如下调整你的块声明:

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

在您的配置文件中,您为块定义了一个别名 (forthcomingproducts),现在您应该遵循它。 Magento 将根据您的要求将forthcomingproducts 取消引用为MyCompany_ForthcomingProducts_Block,然后附加大写的类名(list),创建类名MyCompany_ForthcomingProducts_Block_List。当您使用 Magento 不知道的别名时(在您的示例中为 MyCompany_ForthcomingProducts),它被假定为 Mage 命名空间的一部分。

希望对您有所帮助, 乔

【讨论】:

  • 谢谢乔! Magento 现在已经停止抛出异常,所以我假设它找到了模块。有另一个问题,但我会先看看能不能解决它!
猜你喜欢
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2016-10-28
  • 2011-03-23
  • 2014-07-21
相关资源
最近更新 更多