관리자 패널에서 주문 페이지에서 배송 주소에서 우편 번호를 가져올 수 없습니다.
-
29-09-2020 - |
문제
CE 1.9.2.2를 멀티 웹 사이트로 구성하고 있습니다.
특정 pincoodes를 제한하는 운송 모듈에서 오류를 해결하려고합니다.
모듈은 Frontend Side에서 잘 작동하지만 불행히도 관리 패널에서 주문을 생성하거나 주문에 주석을 추가하려고하면 실패합니다.
디버깅의 비트 후에 옵저버가 우편 번호를 배송 주소에서 가져 오지 못했다는 것을 알았습니다.
config.xml
<events>
<sales_order_save_before>
<observers>
<sales_order_save_before_handler>
<type>model</type>
<class>shippingrestriction/observer</class>
<method>Shippingzip</method>
<args></args>
</sales_order_save_before_handler>
</observers>
</sales_order_save_before>
</events>
.
observer.php
public function Shippingzip(Varien_Event_Observer $observer)
{
$collection = Mage::getModel('shippingrestriction/shippingzip')->getCollection();
$data = array();
foreach ($collection as $value)
{
$data[] = $value->zipcode;
}
$address = Mage::getSingleton('checkout/session')->getQuote()
->getShippingAddress();
if (in_array($address->getData('postcode'),$data))
{
throw new Mage_Core_Exception(
Mage::helper('catalog')->__('Shipping is not available for your location.')
);die;
}
else
{
}
}
.
디버깅은 아래의 함수가 관리 패널에서 빈 값을 반환하고 관리 패널에서 옵저버 파일의 우편 번호 비교 코드가 실패한다는 것을 알았습니다.
$address = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
$address->getData('postcode');
. 해결책
대신 관찰자의
$address = Mage::getSingleton('checkout/session')->getQuote()
->getShippingAddress();
.
put
$address = $observer->getEvent()->getOrder()
->getShippingAddress();
. 제휴하지 않습니다 magento.stackexchange