阻止覆盖管理html函数覆盖代替 - Magento


Block Overriding adminhtml function overrides instead - Magento

我使用模块创建器创建了一个模块。

我正在尝试覆盖Adminhtml''Block''Sales''Order''Grid.php

class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid

我的覆盖块在本地''交付''日期''块''销售''订单''网格中.php

class Delivery_Date_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid

并且要覆盖的功能是

protected function _prepareColumns()
    {

当我尝试覆盖模块中的函数时,我遇到了一个奇怪的问题 阻止更改不受影响,而是如果我注释掉 Mage 文件夹中的相同函数行,我的函数将被覆盖。

假设我在local''Delivery''Date''Block''Sales''Order''Grid中有一个函数.php作为

protected function _prepareColumns()
    {
        $this->addColumn('real_order_id', array(
            'header'=> Mage::helper('sales')->__('Order NEW ID#'),
            'width' => '80px',
            'type'  => 'text',
            'index' => 'increment_id',
        ));}

如果我在管理html''块''销售''订单''网格中注释/删除该行,则会发生注释.php

protected function _prepareColumns()
    {
        $this->addColumn('real_order_id', array(
            'header'=> Mage::helper('sales')->__('Order #'),
            'width' => '80px',
            'type'  => 'text',
            'index' => 'increment_id',
        ));

然后只有我的更改在 adminhtml 网格中受到影响。为什么会发生回退更改?

配置.xml

<blocks>
     <adminhtml>
                <rewrite>
                  <sales_order_grid>Delivery_Date_Block_Sales_Order_Grid</sales_order_grid>
                </rewrite>
     </adminhtml>
</blocks>

您可以尝试一下这是否适合您:

    protected function _prepareColumns()
    {
        parent::_prepareColumns();
        $this->removeColumn('real_order_id');
        $this->addColumn('real_order_id', array(
            'header' => Mage::helper('sales')->__('Order NEW ID#'),
            'width'  => '80px',
            'type'   => 'text',
            'index'  => 'increment_id',
        ));
    }

你需要更改扩展类

class Delivery_Date_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid

请参阅覆盖网格 http://inchoo.net/ecommerce/magento/how-to-extend-magento-order-grid/的示例