Изменение методов доставки для администраторов, создающих заказы


Я пытаюсь внести изменения в информацию о доставке, которая отображается, как только администратор нажимает на ссылку "Получить методы и тарифы доставки".

Очевидно, что мне нужно получить информацию о продукте и адресе до того, как заказ будет сохранен. Мне нужно активировать эти данные при нажатии на ссылку доставки. Захват данных после сохранения заказа не будет работать для меня.

Я пробовал adminhtml_sales_order_create_process_data Однако, похоже, это ничего не возвращает подходящий. Единственное, что я, кажется, могу вернуть с этим событием, это следующее:

$observer->getEvent()->getRequest()

Который возвращает:

Array
(
    [collect_shipping_rates] => 1
    [customer_id] => 2
    [store_id] => 1
    [currency_id] => false
    [form_key] => 0Is4G9KJ2XYer2c7
    [json] => true
)

Я неправильно получаю данные или есть лучший наблюдатель?

Я также пробовал $observer->getEvent()->getOrder();, но это ничего не возвращает.

Обновление: Не уверен, почему люди отмечают вопрос как возможный дубликат, когда на самом деле эти два вопроса совершенно разные. Этот вопрос связан с правильным получением правильных данных, а не с размещением наблюдателя, как у другого вопрос задан и до того, как заказ будет отправлен.

Author: Joe78, 2014-08-06

1 answers

Событие adminhtml_sales_order_create_process_data также содержит модель создания заказа , к которой вы можете получить доступ следующим образом:

/** @var Mage_Adminhtml_Model_Sales_Order_Create $model */
$model = $observer->getEvent()->getOrderCreateModel();

Оттуда вы сможете изменить цитату в соответствии с вашими потребностями.


Если вы хотите изменить шаблон формы доставки (или его данные), вам нужно будет добавить/изменить блоки и/или шаблоны вместо использования наблюдателя событий.

Дескриптор макета adminhtml_sales_order_create_load_block_shipping_method добавляется всякий раз, когда Magento необходимо отобразить форму способа доставки. Это ручка используется для загрузки двух блоков:

<adminhtml_sales_order_create_load_block_shipping_method>
    <reference name="content">
        <block type="adminhtml/sales_order_create_shipping_method" template="sales/order/create/abstract.phtml" name="shipping_method">
            <block type="adminhtml/sales_order_create_shipping_method_form" template="sales/order/create/shipping/method/form.phtml" name="form" />
        </block>
    </reference>
</adminhtml_sales_order_create_load_block_shipping_method>

Если вы знакомы с макетами, у вас не должно возникнуть проблем с внесением любых необходимых изменений. Например, если вы хотите переопределить блок формы, вы можете создать свой собственный файл макета adminhtml со следующим содержимым:

<?xml version="1.0"?>
<layout>
    <adminhtml_sales_order_create_load_block_shipping_method>
        <reference name="shipping_method">
            <remove name="form" />
            <block type="yourmodule/overrides_sales_order_create_shipping_method_form" template="yourmodule/sales/order/create/shipping/method/form.phtml" name="form" />
        </reference>
    </adminhtml_sales_order_create_load_block_shipping_method>
</layout>

Надеюсь, это поможет!

 3
Author: Colin O'Dell, 2014-08-06 20:01:00