أعد كتابة النموذج لمنع تغيير طريقة الشحن في مرحلة مراجعة الطلب عند الخروج

magento.stackexchange https://magento.stackexchange.com/questions/104911

سؤال

أحاول تجاوز فئة نموذجية لمنع العملاء من تغيير عنوان الشحن وطريقة الشحن في مرحلة مراجعة الطلب (النهائية) عند الخروج، وذلك باستخدام هذا الاقتراح.هذه هي النقطة التي يتم عندها إرجاع العميل من PayPal للتحقق من الطلب قبل النقر أخيرًا على زر "تقديم الطلب".نحن نتفق مسبقًا على تكاليف الشحن مع عملائنا من خلال عرض أسعار، لذا فإن منحهم خيار تغيير طريقة الشحن ليس له أي معنى.

هذه هي محاولتي الأولى للقيام بذلك في الماجنتو.يبدو الأمر وكأنني كذلك تقريبا هناك لكنه لا يعمل:

Review Order Shipping Method is still editable

إذا كان بإمكان أي شخص لديه خبرة في تجاوز فئات النماذج في Magento أن يخبرني أين أخطأت فسيكون ذلك أمرًا رائعًا.

(1)
(أ) أنشئ /app/code/local/Lms/Paypal/Model/Express وانسخه إلى /app/code/core/Mage/Paypal/Model/Express/Checkout.php

(ب) إعادة تسمية الفئة في Checkout.php من:mage_paypal_model_express_checkout إلى:يمتد Lms_Paypal_Model_Express_Checkout إلى Mage_Paypal_Model_Express_Checkout

(ج) قم بمسح نص الفصل واستبداله بهذه الوظيفة فقط:

/**
 * Check whether order review has enough data to initialize
 *
 * @param $token
 * @throws Mage_Core_Exception
 */
public function prepareOrderReview($token = null)
{
    parent::prepareOrderReview($token);
    $this->_quote->setMayEditShippingAddress(false);
    $this->_quote->setMayEditShippingMethod(false);
    $this->_ignoreAddressValidation();
    $this->_quote->collectTotals()->save();
}

(2)
(أ) الآن أنشئ dir /app/code/local/Lms/Paypal/etc/
(ب) قم بإنشاء ملف Config.xml في هذا الدليل ووضع هذا الرمز هناك:

<?xml version="1.0"?>
<config>
    <modules>
        <lms_paypal>
            <version>0.1</version>
        </lms_paypal>
    </modules>
    <global>
       <models>
          <paypal>
              <rewrite>
                  <express>Lms_Paypal_Model_Express</express>
              </rewrite>
          </paypal>
       </models>
    </global>
</config>

(3)
(أ) انتقل الآن إلى /app/etc/modules/
(ب) قم بإنشاء Lms_Paypal.xml في هذا الدليل ووضع هذا الرمز في Lms_Paypal.xml:

<?xml version="1.0"?>  
<config>  
    <modules>  
        <Lms_Paypal>  
            <active>true</active>  
            <codePool>local</codePool>  
        </Lms_Paypal>  
    </modules>  
</config> 
هل كانت مفيدة؟

المحلول

طريقك الخطأ في /app/code/local/Lms/Paypal/etc/config.xml وملف النموذج

/app/code/local/Lms/Paypal/Model/Express/Checkout.php

يستبدل config.xml كود الملف من

<?xml version="1.0"?>
<config>
    <modules>
        <lms_paypal>
            <version>0.1</version>
        </lms_paypal>
    </modules>
    <global>
       <models>
          <paypal>
              <rewrite>
                  <express>Lms_Paypal_Model_Express</express>
              </rewrite>
          </paypal>
       </models>
    </global>
</config>

ل

<?xml version="1.0"?>
<config>
    <modules>
        <Lms_Paypal>
            <version>0.1</version>
        </Lms_Paypal>
    </modules>
    <global>
       <models>
          <paypal>
              <rewrite>
                  <express_checkout>Lms_Paypal_Model_Express_Checkout</express_checkout>
              </rewrite>
          </paypal>
       </models>
    </global>
</config>

استبدل أيضًا الكود الموجود في الملف app/code/local/Lms/Paypal/Model/Express/Checkout.php من

public function prepareOrderReview($token = null)
{
    parent::prepareOrderReview($token);
    $this->_quote->setMayEditShippingAddress(false);
    $this->_quote->setMayEditShippingMethod(false);
    $this->_ignoreAddressValidation();
    $this->_quote->collectTotals()->save();
}

ل

class Lms_Paypal_Model_Express_Checkout extends Mage_Paypal_Model_Express_Checkout
{

    public function prepareOrderReview($token = null)
    {
        $payment = $this->_quote->getPayment();
        if (!$payment || !$payment->getAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_PAYER_ID)) {
            Mage::throwException(Mage::helper('paypal')->__('Payer is not identified.'));
        }
        $this->_quote->setMayEditShippingAddress(false);
        $this->_quote->setMayEditShippingMethod(false);
        $this->_ignoreAddressValidation();
        $this->_quote->collectTotals()->save();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top