Кнопка просмотра заказа Magento для процесса идентификации

Я должен поместить кнопку в вид заказа, который будет отправлять идентификатор заказа. Идентификатор будет использоваться для простого запроса к базе данных, после чего он должен вернуться к виду заказа.

Я узнал, как создать кнопку, я создал 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'
            ));
    }

Я хочу, чтобы это местоположение, которое должно быть sales_order/release, чтобы действительно что-то делать с идентификатором заказа. Я пытался понять, как, но мне не удается создать контроллер.

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тоже дает хорошие результаты, поэтому я не буду приводить здесь длинный пример.

Другие вопросы по тегам