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?

DRAJI
quelle

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

Vlad Patru
quelle
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
magento.stackexchange.com/questions/216191/… können Sie mir bitte dabei helfen ?
Magento2 Devloper
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 .

Kazim Noorani
quelle