管理パネルの[注文の作成]ページの[順序]ページから郵便番号を取得できません
-
29-09-2020 - |
質問
マルチウェブサイト用に設定されたCE 1.9.2.2を使用しています。
特定のピンコードを制限する出荷モジュールでエラーを解決しようとしています。
モジュールはフロントエンド側でうまく機能しますが、残念ながら、注文が管理パネルから作成されている場合、または注文にコメントを追加しようとすると失敗します。
デバッグの後、オブザーバーが出荷先住所から郵便番号を取得できなかったことがわかりました。
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
{
}
}
.
デバッグ中は、下記関数が「管理パネルの作成順序」ページで空の値を返し、したがってObserverファイル内のポストコード比較コードは管理パネルで失敗します。
$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