Magento:自定义模块错误(在 Layout.php 中找不到类)
Posted
技术标签:
【中文标题】Magento:自定义模块错误(在 Layout.php 中找不到类)【英文标题】:Magento: error for custom module (Class not found in Layout.php) 【发布时间】:2013-01-17 14:57:36 【问题描述】:我尝试在 Magento 中创建一个新的自定义模块(块),它将在产品详细信息页面上显示制造商的其他产品。当我加载产品详细信息页面时,我得到:
Fatal error: Class 'AimIT_ManufacturerBlock_Block_Manufacturerblock' not found in ..\app\code\core\Mage\Core\Model\Layout.php on line 491
我已经创建了:
1)\app\etc\modules\AimIT_ManufacturerBlock.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<AimIT_ManufacturerBlock>
<!-- Whether our module is active: true or false -->
<active>true</active>
<!-- Which code pool to use: core, community or local -->
<codePool>local</codePool>
</AimIT_ManufacturerBlock>
</modules>
</config>
2) \app\code\local\AimIT\ManufacturerBlock\etc\config.xml
<?xml version="1.0"?>
<config>
<global>
<blocks>
<aimitmanufacturerblock>
<class>AimIT_ManufacturerBlock_Block</class>
</aimitmanufacturerblock>
</blocks>
</global>
</config>
3) \app\code\local\AimIT\ManufacturerBlock\Block\Manufacturerblock.php
<?php
class AimIT_ManufacturerBlock_Block_Manufacturerblock extends Mage_Core_Block_Template
public function getManufacturerProducts($manufacturer)
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('manufacturer',$manufacturer);
$collection->addAttributeToSelect('manufacturer');
return $collection;
?>
4)\app\design\frontend\default\respond\template\aimit\manufacturerblock\manufacturerblock.phtml
<?php $_products = $this->getManufacturerProducts('cukrarna-u-vanku') ?>
<?php print_r($_products); ?>
5) 在 catalog\product\view.phtml 我已经放置了这段代码:
<?php echo $this->getLayout()->createBlock('aimitmanufacturerblock/manufacturerblock')->setTemplate('aimitmanufacturerblock/manufacturerblock.phtml')->toHtml(); ?>
创建模块时我省略了什么?
【问题讨论】:
【参考方案1】:当将“aimitmanufacturerblock/manufacturerblock”翻译成类名时,Magento 会生成AimIT_ManufacturerBlock_Block_Manufacturerblock
并且无法找到该名称下的类,因为您的块的类名实际上是“AimIT_ManufacturerBlock_Block_ManufacturerBlock”——大小写错误。
将你的类重命名为
class AimIT_ManufacturerBlock_Block_Manufacturerblock extends Mage_Core_Block_Template
将你的类文件ManufacturerBlock
.php 重命名为Manufacturerblock.php
【讨论】:
感谢您的回答。但似乎没有帮助。我试过了,出现了同样的消息。 您的商店是在 Windows 还是 Linux 上运行?我在我的 Windows 机器上遇到了类似的问题 - 我在与 Linux 服务器共享的文件夹中编辑代码库,该商店实际运行在该文件夹中。如果我在 Windows 中重命名文件并且只更改字母大小写 - Linux 服务器并不总是会选择它,并且错误仍然存在。我必须删除该文件并使用正确的名称重新创建它。 好的,我删除并再次创建它现在似乎可以工作了。所以似乎是命名。非常感谢您的帮助!以上是关于Magento:自定义模块错误(在 Layout.php 中找不到类)的主要内容,如果未能解决你的问题,请参考以下文章
Magento2 - 使用 Paypal 计费协议创建自定义订单(“强制参数缺少 referenceId 错误”)