1

我已经在这里待了几个小时了。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>

但是,我的块(实际上是一个网格容器)不会从正确的命名空间中调用:

app/code/local/[命名空间]/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->_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>

我到处寻找原因,不知道在哪里寻找错误。请帮忙!!!

4

2 回答 2

1

回答(谢谢,ivantedja!)

它应该是 'newcart',而不是 '[namespace]_newcart'(在 blocks 节点中,您不需要指定命名空间)

于 2012-09-24T19:11:00.513 回答
0

只需将下一个代码添加到模块的 config.xml 中:

<config>
    ...
    <global>
        ...
        <blocks>
            <[namespace]_newcart>
                <class>[Namespace]_Newcart_Block</class>
            </[namespace]_newcart>
        </blocks>
        ...
    </global>
    ...
</config>
于 2012-09-21T22:05:51.377 回答