선택한 맞춤 배송 방법을 한 페이지 결제시 맞춤 입력 텍스트 영역으로 표시


9

다음과 같은 맞춤 배송 방법을 성공적으로 추가했습니다.

app / etc / config.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <carriers>
            <lime>
                <active>1</active>
                <allowed_methods>delivery</allowed_methods>
                <methods>delivery</methods>
                <type>NAMESPACE</type>
                <sallowspecific>0</sallowspecific>
                <model>Namespace\Module\Model\Carrier</model>
                <name>Namespace_Module custom Shipping</name>
                <title>Namespace_Module custom Shipping</title>
                <handling_type>F</handling_type>
            </lime>
        </carriers>
    </default>
</config>

앱 / 코드 / 네임 스페이스 / 모듈 / 모델 /Carrier.php

public function collectRates(RateRequest $request)
{
    if (!$this->getConfigFlag('active')) {
        return false;
    } 
    $result = $this->_rateResultFactory->create(); 
    $method = $this->_rateMethodFactory->create(); 
    $method->setCarrier('HILO');
    $method->setCarrierTitle('HILO'); 
    $method->setMethod('Fast');
    $method->setMethodTitle('Fast'); 
    $amount = $this->getConfigData('price'); 
    $method->setPrice($amount);
    $method->setCost($amount); 
    $result->append($method);
    return $result;
}

결제 페이지에 표시되지만 사용자가 사용자 정의 배송 방법을 선택할 때 사용자 정의 텍스트 영역 입력 데이터를 표시하고 사용자 정의 입력 텍스트 영역 데이터를 저장할 수 있습니다.

여기에 내가 원하는 모양이 있습니다.

여기에 이미지 설명을 입력하십시오


2
안녕하세요,이 필드를 어떻게 추가 했습니까? 코드를 얻을 수 있도록 도와 주시겠습니까?
Mujahidh

답변:


2

사용자 정의 운송 방법을 선택한 후 사용자 정의 입력 필드를 표시하려면 메소드 이벤트를 선택하기 위해 구독하는 js 블록을 추가해야합니다.

레이아웃 checkout_index_index.xml에 사용자 정의 phtml 추가

그런 다음 phtml에 다음 블록을 추가하십시오.

<script type="text/javascript">
    require([
        'jquery',
        'Magento_Checkout/js/model/quote',
    ], function (jQuery, quote) {
        jQuery(document).ready(function () {
            quote.shippingMethod.subscribe(function (value) {
                if (quote.shippingMethod() && quote.shippingMethod().carrier_code == 'your_custom_shipping_method_code') {
                    var customBlock = "<div class ='custom-information'><input type="text" id="your_custom_id"></div>";
                    if((!$('.custom-information').length > 0)) {
                        $('#checkout-shipping-method-load').append(customBlock);
                    }
                });
            });
        });
    });
</script>

위 코드를 사용하여 원하는 배송 방법 아래에 원하는 입력을 추가합니다.

그런 다음 사용자 정의 값을 저장하려면 플러그인을 작성해야합니다.

확인 : Magento \ Checkout \ Model \ Guest 배송 정보 관리

도움이 되길 바랍니다. 감사합니다, 파블로


2
좀 더 설명해 주시겠습니까
Mujahidh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.