【问题标题】:Error on Magento adminhtml category tab block overrideMagento adminhtml 类别选项卡块覆盖错误
【发布时间】:2015-09-09 07:57:36
【问题描述】:

当我尝试覆盖 "app\code\core\Mage\Adminhtml\Block\Catalog\Category\Tab" 此块 Mage_Adminhtml_Block_Catalog_Category_Tab_Product 用于在类别产品列表选项卡中添加新列

我收到了这个错误

致命错误:在非对象上调用成员函数 toHtml() D:\xampp\htdocs\magento_new\app\code\core\Mage\Adminhtml\Block\Catalog\Category\Tabs.php 在第 153 行

我的代码

模块配置 xml app\code\local\Krp\Adminhtml\etc\config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Krp_Adminhtml>
            <version>0.1</version>
        </Krp_Adminhtml>
    </modules>

    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <catalog_category_tab_product>Krp_Adminhtml_Block_Catalog_Category_Tab_Product</catalog_category_tab_product>
                </rewrite>
            </adminhtml>            
        </blocks>
    </global>    
</config>

app\etc\modules\Krp_Adminhtml.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Krp_Adminhtml>
            <active>true</active>
            <codePool>local</codePool>
        </Krp_Adminhtml>
    </modules>
</config>

块文件代码app\code\local\Krp\Adminhtml\Block\Catalog\Category\Tab\Product.php

class Krp_Adminhtml_Block_Catalog_Category_Tab_Product extends Mage_Adminhtml_Block_Catalog_Category_Tab_Product{

   protected function _prepareCollection(){
    //=============== Code ==================//
   }

}

【问题讨论】:

  • 有什么解决办法吗?

标签: php xml magento content-management-system e-commerce


【解决方案1】:

您忘记配置块类的名称。

config.xml

    <config>
    ...
        <global>
        ...
            <blocks>
                <krp_adminhtml>
                    <class>Krp_Adminhtml_Block</class>
                </krp_adminhtml>

                <adminhtml>
                    <rewrite>
                        <catalog_category_tab_product>Krp_Adminhtml_Block_Catalog_Category_Tab_Product</catalog_category_tab_product>
                    </rewrite>
                </adminhtml>
            </blocks>
        ...
        </global>
    ...
    </config>

【讨论】:

    【解决方案2】:

    /app/code/local/Krp/Adminhtml/Block/Adminhtml/Catalog/Category/Tab/Product.php

    文件应该如下:

    <?php
    class Krp_Adminhtml_Block_Adminhtml_Catalog_Category_Tab_Product extends Mage_Adminhtml_Block_Catalog_Category_Tab_Product
    {
    }
    

    您的 confing.xml 应如下所示:

    <?xml version="1.0"?>
    <config>
      <modules>
        <Krp_Adminhtml>
          <version>1.0.0</version>
        </Krp_Adminhtml>
      </modules>
      <global>
        <helpers>
          <adminhtml>
            <class>Krp_Adminhtml_Helper</class>
          </adminhtml>
        </helpers>
        <blocks>
          <adminhtml>
            <class>Krp_Adminhtml_Block</class>
          </adminhtml>
                <adminhtml>
                    <rewrite>
                        <catalog_category_tab_product>Krp_Adminhtml_Block_Adminhtml_Catalog_Category_Tab_Product</catalog_category_tab_product>
                    </rewrite>
                </adminhtml>
        </blocks>
      </global>
    </config> 
    

    如果需要,最后是 Helper 类 /app/code/local/Krp/Adminhtml/Helper/Data.php

     <?php
        class Krp_Adminhtml_Helper_Data extends Mage_Core_Helper_Abstract
        {
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2015-08-03
      • 1970-01-01
      • 2015-08-29
      相关资源
      最近更新 更多