1 - Ich füge ein eav-Attribut zu customer_address hinzu
$attributesInfo = [
'reference' => [
'label' => 'Reference',
'type' => 'varchar',
'input' => 'text',
'position' => 100,
'visible' => true,
'required' => false,
],
];
foreach ($attributesInfo as $attributeCode => $attributeParams) {
$customerSetup->addAttribute('customer_address', $attributeCode, $attributeParams);
}
2 - Ich habe das Erweiterungsattribut in meinem Modul hinzugefügt
<extension_attributes for="Magento\Quote\Api\Data\AddressInterface">
<attribute code="reference" type="string"/>
</extension_attributes>
In meiner requirejs-config.js überschreibe ich eine Javascript-Datei, um ein Referenzfeld hinzuzufügen
var config = {
"map": {
"*": {
"Magento_Checkout/js/model/shipping-save-processor/default" : "Agr_Checkout/js/shipping-save-processor-default-override",
"Magento_Customer/js/model/customer/address" : "Agr_Checkout/js/model/customer/address",
"Magento_Checkout/js/model/address-converter" : "Agr_Checkout/js/model/address-converter",
"Magento_Checkout/js/model/new-customer-address" : "Agr_Checkout/js/model/new-customer-address"
}
}
3 - Ich bestätige, dass das Referenzfeld eine Adresse sendet
4 - Wenn ich meine Versandinformationen sende (Klicken Sie auf Weiter), wird der folgende Fehler angezeigt : "Die Eigenschaft" Referenz "verfügt nicht über einen entsprechenden Setter in der Klasse" Magento \ Quote \ Api \ Data \ AddressInterface "."
Ich mache bereits: - Magento-Cache leeren und leeren - Setup ausführen: Upgrade - Setup ausführen: di: compile
Was mache ich falsch?
Antworten:
Das Einrichten von Attributen in einem eav-Setup- oder -Upgrade-Skript funktioniert am besten und wird automatisch zu Formularen hinzugefügt, zu denen Sie es hinzufügen möchten.
Dieser Code hier wird zu den Formularen hinzugefügt und es wird kein Problem beim Speichern oder Weiterleiten an den nächsten Schritt geben
quelle
Versuchen Sie es mit benutzerdefinierten Attributen.
Beispiel:
quelle
Wie übergeben Sie das Attribut in der Anfrage? Sie können die Browserkonsole so überprüfen
Es ist richtig. Sie können den var-Ordner und den generierten Ordner var / cache var / page_cache var / view_proceed und generated / entfernen .
quelle