我在自定义命名空间的本地代码文件夹中创建了一个模块。 该块未显示在前端,并且在检查异常日志时,发现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>
答案 0 :(得分:7)
尝试按如下方式调整块声明:
{{block type="forthcomingproducts/list" template="forthcomingproducts/list.phtml"}}
在您的配置文件中,您为块(forthcomingproducts
)定义了别名,现在您应该关注它。 Magento会根据您的请求将forthcomingproducts
取消引用为MyCompany_ForthcomingProducts_Block
,然后附加大写的类名(list
),创建类名MyCompany_ForthcomingProducts_Block_List
。当您使用Magento不知道的alis(在您的示例中为MyCompany_ForthcomingProducts
)时,它被假定为Mage名称空间的一部分。
希望有所帮助, 乔