0

注文 ID をさらに送信するボタンを注文ビューに配置する必要があります。ID は単純なデータベース クエリに使用され、その後、注文ビューに戻る必要があります。

app/code/local/Mage/Adminhtml/Block/Sales/Order/View.phpボタンの作り方がわかったので、コアから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'
            ));
    }

私が欲しいのは、注文IDで実際に何かをするためにsales_order/releaseでなければならないこの場所です。方法を理解しようとしましたが、実際にコントローラーを作成することはできません。

4

1 に答える 1

0

おそらく、これらのオーバーライドをモジュールに収集する必要があります。そうでなければ、醜い方法はコピーすることです

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

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

-関数を追加しreleaseAction()ます。

etc/config.xmlより洗練されたソリューションでは、指定されたブロックとコントローラー コードをオーバーライド/オーバーロードするために、そのファイルに構成オプションを含むモジュールを作成する必要があります。この方法を使用すると、変更がより適切に含まれ、モジュールのオン/オフを簡単に切り替えることができます。また、元のブロック/コントローラーを拡張する場合、変更/追加されたメソッド以外を含める必要はありません。残りは元のファイルから実行されます。

実際、Magento の主要なドキュメントにも適切な例があります

グーグル検索でmagento controller overloadも良い結果が得られるので、ここでは長い例を挙げません。

于 2014-03-26T16:08:25.200 に答える