문제

관리자가 "배송 방법 및 요금 확인" 링크를 클릭하면 표시되는 배송 정보에 변경 사항을 적용하려고 합니다.

분명히 주문이 저장되기 전에 제품과 주소 정보를 가져와야 합니다.배송 링크를 클릭할 때 이 데이터를 트리거해야 합니다. 주문이 저장된 후에 데이터를 가져오는 것은 나에게 적합하지 않습니다.

나는 시도했다 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(); 하지만 그것은 아무것도 반환하지 않습니다.

업데이트:실제로 두 질문이 완전히 다른데 왜 사람들이 질문을 중복 가능성으로 표시하는지 잘 모르겠습니다.이 질문은 다른 질문과 같이 주문이 제출되기 전에 관찰자 배치가 아니라 올바른 데이터를 올바르게 잡는 것과 관련이 있습니다.

도움이 되었습니까?

해결책

그만큼 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>

도움이 되었기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top