Cách thêm trường tùy chỉnh mới vào phần địa chỉ thanh toán trong magento2


7

Tôi đã cố gắng thêm trường mới trong phần địa chỉ thanh toán magento2. Tôi đã theo liên kết dưới đây để thêm trường mới trong khối địa chỉ giao hàng

http://oyenetwork.com/articles/magento2-devliery-date-module-creation-from-scratch/

Tôi đã thêm lĩnh vực mới vào phần địa chỉ giao hàng thành công. Nhưng trong trang web của tôi, tôi đã sử dụng " Sản phẩm ảo ". Vì vậy, tôi muốn thêm trường tùy chỉnh mới của mình vào phần thanh toán. Tôi vừa sửa đổi mã " LayoutProcessorPlugin.php " như bên dưới

$ jsLayout ['thành phần'] ['thanh toán'] ['trẻ em'] ['bước'] ['trẻ em'] ['bước thanh toán'] ['trẻ em'] ['thanh toán'] ['trẻ em'] [ 'danh sách thanh toán'] ['trẻ em'] ['Delivery_date']

thay vì

$ jsLayout ['thành phần'] ['thanh toán'] ['trẻ em'] ['bước'] ['trẻ em'] ['vận chuyển bước'] ['trẻ em'] ['vận chuyển địa chỉ'] ['trẻ em'] [ 'vận chuyển-địa chỉ-lĩnh vực'] ['trẻ em'] ['Delivery_date']

Nhưng nó không hoạt động. Làm cách nào để thêm trường tùy chỉnh mới của tôi vào khối địa chỉ Thanh toán trong magento2?

Câu trả lời:


13

bạn cần tạo một plugin trong mô-đun tùy chỉnh của mình (cái mà bạn đã sử dụng để tạo thuộc tính tùy chỉnh) và có mã giống như sau:

namespace Package\Name\Plugin\Checkout;

class LayoutProcessor
{
    public function afterProcess(
        \Magento\Checkout\Block\Checkout\LayoutProcessor $subject,
        array $jsLayout
    ) {
        // Loop all payment methods (because billing address is appended to the payments)
        $configuration = $jsLayout['components']['checkout']['children']['steps']['children']['billing-step']['children']['payment']['children']['payments-list']['children'];
        foreach ($configuration as $paymentGroup => $groupConfig) {
            if (isset($groupConfig['component']) AND $groupConfig['component'] === 'Magento_Checkout/js/view/billing-address') {

                $jsLayout['components']['checkout']['children']['steps']['children']['billing-step']['children']
                ['payment']['children']['payments-list']['children'][$paymentGroup]['children']['form-fields']['children']['custom_attribute_code'] = [
                    'component' => 'Magento_Ui/js/form/element/abstract',
                    'config' => [
                        'template' => 'ui/form/field',
                        'elementTmpl' => 'ui/form/element/input',
                        'id' => 'custom_attribute_id',
                    ],
                    'dataScope' => $groupConfig['dataScopePrefix'] . '.custom_attribute_id',
                    'label' => __('Custom attribute label'),
                    'provider' => 'checkoutProvider',
                    'visible' => true,
                    'validation' => [
                        'required-entry' => true,
                        'min_text_length' => 0,
                    ],
                    'sortOrder' => 300,
                    'id' => 'custom_attribute_id'
                ];
            }
        }

        return $jsLayout;
    }
}

Hi vọng điêu nay co ich


sau này, làm cách nào tôi có thể lưu trữ giá trị thuộc tính địa chỉ tùy chỉnh trong bảng báo giá cho địa chỉ thanh toán?
chirag

để làm điều đó, bạn nên tạo một plugin cho Trích dẫn để thêm trường mới
Vlad Patru

Làm cách nào để thêm nút thả xuống và nút radio?
Manish

@ Tôi biến tôi không hiểu câu hỏi, vì những gì bạn cần thả xuống / radiobutton? rất có thể bạn nên kiểm tra những phần tử biểu mẫu nào được hỗ trợ và thay đổi elementTmplhoặc tạo một kiểu mới nếu chưa thực hiện được phần tử mong muốn. Nhìn vào Magento_UIthành phần này
Vlad Patru

magento.stackexchange.com/questions/216191/ Bạn có thể vui lòng giúp tôi về điều đó.
Magento2 Devloper

0

@Vlad Patru hoàn toàn đúng.

Chỉ muốn thêm rằng vòng lặp này của tất cả các phương thức thanh toán thu được trong $configuration. Nhưng cần lưu ý rằng Bắt đầu từ phiên bản Magento 2.1.4, cấu hình thanh toán có thêm tùy chọn Hiển thị địa chỉ thanh toán (Cửa hàng -> Cấu hình -> Thanh toán -> Tùy chọn thanh toán) . Nó có hai giá trị có thể:

Phương thức thanh toán - địa chỉ thanh toán được hiển thị theo phương thức thanh toán

Trang thanh toán - địa chỉ thanh toán được hiển thị ở trên phương thức thanh toán

Vì vậy, $configuationsẽ chỉ trả lại tất cả các phương thức thanh toán khi Địa chỉ thanh toán hiển thị được chọn theo Phương thức thanh toán .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.