Block Overriding adminhtml函数改为覆盖 - Magento

时间:2013-10-11 07:37:24

标签: php magento magento-1.7 block

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

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

class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid

我的覆盖块在本地\ Delivery \ Date \ Block \ Sales \ Order \ Grid.php

class Delivery_Date_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid

和覆盖的功能是

protected function _prepareColumns()
    {

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

假设我在本地\ 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',
        ));}

如果我在Adminhtml \ Block \ Sales \ Order \ Grid.php中注释/删除该行,则会发生相反的注意事项

protected function _prepareColumns()
    {

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

然后,只有我的更改会受到adminhtml网格的影响。 为什么会发生后备变化?

config.xml中

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

2 个答案:

答案 0 :(得分:0)

你可以试试这个是否适合你:

    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',
        ));
    }

答案 1 :(得分:0)

您需要更改扩展类

class Delivery_Date_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid

请参见屏幕上的示例http://inchoo.net/ecommerce/magento/how-to-extend-magento-order-grid/