So fügen Sie dem Abschnitt für Rechnungsadressen in magento2 ein neues benutzerdefiniertes Feld hinzu


7

Ich habe versucht, ein neues Feld im Abschnitt "Magento2-Rechnungsadresse" hinzuzufügen. Ich bin dem folgenden Link gefolgt, um ein neues Feld im Versandadressblock hinzuzufügen

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

Ich habe erfolgreich ein neues Feld zum Abschnitt mit der Versandadresse hinzugefügt. Aber auf meiner Website habe ich " Virtuelle Produkte " verwendet. Daher möchte ich mein neues benutzerdefiniertes Feld zum Abrechnungsbereich hinzufügen. Ich habe gerade den Code " LayoutProcessorPlugin.php " wie unten geändert

$ jsLayout ['Komponenten'] ['Kasse'] ['Kinder'] ['Schritte'] ['Kinder'] ['Abrechnungsschritt'] ['Kinder'] ['Zahlung'] ['Kinder'] [ 'Zahlungsliste'] ['Kinder'] ['Lieferdatum']

anstatt

$ jsLayout ['Komponenten'] ['Kasse'] ['Kinder'] ['Schritte'] ['Kinder'] ['Versandschritt'] ['Kinder'] ['Versandadresse'] ['Kinder'] [ 'Versandadresse-Feldset'] ['Kinder'] ['Lieferdatum']

Aber es funktioniert nicht. Wie füge ich mein neues benutzerdefiniertes Feld zum Rechnungsadressblock in magento2 hinzu?

Antworten:


13

Sie müssen ein Plugin in Ihrem benutzerdefinierten Modul erstellen (das, mit dem Sie das benutzerdefinierte Attribut erstellt haben) und über den folgenden Code verfügen:

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;
    }
}

Hoffe das hilft


Wie kann ich danach einen benutzerdefinierten Adressattributwert in der Angebotstabelle für die Rechnungsadresse speichern?
— Chirag

dafür solltest du ein Plugin für das Zitat erstellen, um das neue Feld hinzuzufügen
— Vlad Patru

Wie füge ich Dropdown und Optionsfeld hinzu?
— Manish

@ Manish Ich verstehe die Frage nicht, wofür brauchst du Dropdown / Radiobutton? Höchstwahrscheinlich sollten Sie überprüfen, welche Formularelemente unterstützt werden, und die ändern elementTmploder einen neuen Typ erstellen, falls der gewünschte noch nicht fertig ist. Schauen Sie in der Magento_UIKomponente dafür
— Vlad Patru


0

@ Vlad Patru ist absolut richtig.

Ich möchte nur hinzufügen, dass diese Schleife aller Zahlungsmethoden in erhalten wird $configuration. Es ist jedoch zu beachten, dass die Checkout-Konfiguration ab Magento 2.1.4 eine zusätzliche Option zum Anzeigen der Abrechnungsadresse ein (Stores -> Konfiguration -> Checkout -> Checkout-Optionen) enthält . Es gibt zwei mögliche Werte:

Zahlungsmethode - Die Rechnungsadresse wird pro Zahlungsmethode angezeigt

Zahlungsseite - Die Rechnungsadresse wird über den Zahlungsmethoden angezeigt

Daher $configuationwerden alle Zahlungsmethoden nur zurückgegeben, wenn Rechnungsadresse anzeigen gemäß Zahlungsmethode ausgewählt ist .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.