【问题标题】:Magento order view button for id process用于 id 进程的 Magento 订单视图按钮
【发布时间】:2014-03-26 07:21:37
【问题描述】:

我必须在订单视图中放置一个按钮,以进一步发送订单 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 执行某些操作。我试图理解如何,但我无法实际创建控制器。

【问题讨论】:

    标签: php magento button ecommerce-sales


    【解决方案1】:

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

    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也能得到很好的结果,所以我不会在这里给出一个冗长的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多