用于id进程的Magento订单查看按钮

时间:2014-03-26 07:21:37

标签: php magento button sales

我必须在订单视图中放置一个按钮,以便进一步发送订单ID。 id将用于简单的数据库查询,然后它应返回到订单视图。

我发现了如何创建按钮,我在核心的view.php之后创建了app/code/local/Mage/Adminhtml/Block/Sales/Order/View.php

这是我的代码:

class Mage_Adminhtml_Block_Sales_Order_View extends
   Mage_Adminhtml_Block_Widget_Form_Container
    {

    public function __construct()
    {
        $this->_objectId    = 'order_id';
        $this->_controller  = 'sales_order';
        $this->_mode        = 'view';

        parent::__construct();

        $this->_removeButton('delete');
        $this->_removeButton('reset');
        $this->_removeButton('save');
        $this->setId('sales_order_view');
        $order = $this->getOrder();

        $this->_addButton('release_payment', array(
                'label' => Mage::helper('sales')->__('Release Payment'),
                'onclick' => 'setLocation(\'' . $this->getUrl('*/*/release') . '\')',
                'class' => 'go'
            ));
    }

我想要的是这个应该是sales_order / release的位置实际上对订单ID做了些什么。我试图了解如何但我无法实际创建控制器。

1 个答案:

答案 0 :(得分:0)

您应该将这些覆盖收集到模块中。否则,丑陋的方法就是复制

app/code/core/Mage/Adminhtml/controllers/OrderController.php

app/code/local/Mage/Adminhtml/controllers/OrderController.php

并将releaseAction() - 函数添加到其中。

对于更优雅的解决方案,您需要在其etc/config.xml文件中创建一个带有配置选项的模块,以覆盖/重载指定的块和控制器代码。使用此方法可以更好地包含更改,并且可以轻松地打开/关闭模块。此外,在扩展原始块/控制器时,您不需要包含修改/添加的方法以外的任何内容,其余的将从原始文件执行。

实际上即使是Magento的主要文档都有不错的例子: http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller

谷歌搜索magento controller overload也给出了很好的结果,所以我不会在这里给出一个冗长的例子。