我已经在这几个小时了。 Magento一直试图从Mage命名空间而不是我自己的命名空间中调用我的块。
错误: 异常'Mage_Core_Exception',并在/Library/WebServer/Documents/magento/app/Mage.php:594中显示消息'无效的块类型:Mage_Newcart_Block_Adminhtml_Igrid'
我到处试图找到问题。我知道它符合我的布局并且手柄有效:
<?xml version="1.0"?>
<layout version="0.1.0">
<images_adminhtml_index_index>
<reference name="content">
<block type="newcart/adminhtml_igrid" name="adminblock" />
</reference>
</images_adminhtml_index_index>
</layout>
但是我的块(实际上是一个网格容器)不会从正确的命名空间中调用:
应用程序/代码/本地/ [命名空间] /Newcart/Block/Adminhtml/Igrid.php
class [Namespace]_Newcart_Block_Adminhtml_Igrid extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_controller = 'adminhtml_imagegrid';
$this->_blockGroup = 'newcart';
$this->_headerText = 'Images';
$this->_addButtonLabel = 'Add an Image';
parent::__construct();
}
protected function _prepareLayout()
{
//Mage::log($this->createBlock( $this->_blockGroup.'/' . $this->_controller . '_grid',
// $this->_controller . '.grid'), null, ‘layout.log’ );
$this->setChild( 'grid',
$this->getLayout()->createBlock( $this->_blockGroup.'/' . $this->_controller . '_grid',
$this->_controller . '.grid')->setSaveParametersInSession(true) );
return parent::_prepareLayout();
}
}
注意:Imagegrid是同一目录中的文件。我试过'$ this-&gt; _controller ='adminhtml_igrid';', 但是,它没有解决问题。
配置:
<?xml version="1.0"?>
<config>
<modules>
<[namespace]_Newcart>
<version>0.1.0</version>
</[namespace]_Newcart>
</modules>
<admin>
<routers>
<images>
<use>admin</use>
<args>
<module>[namespace]_Newcart</module>
<frontName>imageadmin</frontName>
</args>
</images>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<images>
<file>images.xml</file>
</images>
</updates>
</layout>
</adminhtml>
<global>
<blocks>
<[namespace]_newcart>
<class>[namespace]_Newcart_Block</class>
</[namespace]_newcart>
</blocks>
<models>
<images>
<class>[namespace]_Newcart_Model</class>
<resourceModel>image_resource</resourceModel>
</images>
<image_resource>
<class>[namespace]_Newcart_Model_Resource</class>
<entities>
<imagemodel>
<table>nw_images</table>
</imagemodel>
</entities>
</image_resource>
</models>
</global>
</config>
我到处寻找原因并且不知道在哪里寻找错误。请帮忙!!!
答案 0 :(得分:2)
回答(谢谢,ivantedja!)
它应该是&#39; newcart&#39;,而不是&#39; [namespace] _newcart&#39; (在块节点中,您不需要指定命名空间)
答案 1 :(得分:0)
只需将下一个代码添加到模块的config.xml中:
<config>
...
<global>
...
<blocks>
<[namespace]_newcart>
<class>[Namespace]_Newcart_Block</class>
</[namespace]_newcart>
</blocks>
...
</global>
...
</config>