Wir arbeiten daran, ein Kundenadressattribut zu erstellen, da der Eingabetyp Datei ist. Wir haben den Code von silksoftware heruntergeladen, indem wir " Kundenattribut hinzufügen " -> "Entitätstyp" -> "Kundenadresse" ausgewählt haben. Der folgende Code lautet jedoch funktioniert nicht / spart, kann jemand, bitte helfen Sie uns in dieser Angelegenheit.
<?php
namespace Module\Vendor\Setup;
use Magento\Eav\Model\Config;
use Magento\Eav\Model\Entity\Setup\Context;
use Magento\Eav\Setup\EavSetup;
use Magento\Framework\App\CacheInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Model\ResourceModel\Entity\Attribute\Group\CollectionFactory;
class CustomerSetup extends EavSetup {
protected $eavConfig;
public function __construct(
ModuleDataSetupInterface $setup,
Context $context,
CacheInterface $cache,
CollectionFactory $attrGroupCollectionFactory,
Config $eavConfig
) {
$this -> eavConfig = $eavConfig;
parent :: __construct($setup, $context, $cache, $attrGroupCollectionFactory);
}
public function installAttributes($customerSetup) {
$this -> installCustomerAttributes($customerSetup);
$this -> installCustomerAddressAttributes($customerSetup);
}
public function installCustomerAttributes($customerSetup) {
}
public function installCustomerAddressAttributes($customerSetup) {
$customerSetup -> addAttribute('customer_address',
'customeridproof',
[
'label' => 'Customeridproof',
'system' => 0,
'user_defined' => true,
'position' => 100,
'sort_order' =>100,
'visible' => true,
'default_value' => '',
'note' => '',
'type' => 'varchar',
'input' => 'file',
]
);
$customerSetup -> getEavConfig() -> getAttribute('customer_address', 'customeridproof')->setData('is_user_defined',1)->setData('default_value','')-> setData('used_in_forms', ['adminhtml_customer_address', 'customer_register_address', 'customer_address_edit']) -> save();
}
public function getEavConfig() {
return $this -> eavConfig;
}
}
magento2
image
customer-attribute
customer-address
Krishna ijjada
quelle
quelle
Antworten:
Wenn ich Sie wäre, würde ich Mage2Gen verwenden, um die Grundlagen Ihrer Magento 2-Module zu entwickeln
https://mage2gen.com/
Es ist möglich, Kunden- und Kundenadressattribute über eine einfache Oberfläche zu erstellen.
Neben dem Generieren von Modulen können Sie sich dieses Code-Snippet ansehen, um auf einfache Weise benutzerdefinierte Kundenattribute zu erstellen. Https://mage2gen.com/snippets/customerattribute/
Warnung. Nicht alle Vorlagendateien sind so eingerichtet, dass Kunden- oder Kundenadressattribute dynamisch geladen werden.
Es ist eigentlich ziemlich einfach, die Adressfelder zur Registrierungsseite hinzuzufügen. Weitere Informationen zum Hinzufügen der Adressfelder zur Registrierungsseite finden Sie in einem meiner Artikel unter https://codeblog.experius.nl/magento-2-address -Felder-Kundenregistrierung /
Wenn Sie dieser Vorlage dann Ihr benutzerdefiniertes Feld hinzufügen möchten, überschreiben Sie die Vorlagendatei in Ihrem Design. Dies ist der Kerndateipfad:
Anbieter / Magento / Modul-Kunde / Ansicht / Frontend / Vorlagen / Formular / Register.phtml
quelle
Sieht so aus, als ob Ihnen der Backend-Typ fehlt.
Das Backend-Attribut teilt Magento mit, welche Attributklasse zum Speichern / Speichern des Felds verwendet werden soll, sobald es das Backend erreicht.
Versuche dies :
Dieser Code sagt im Wesentlichen "Verwendung"
Mage_Customer_Model_Attribute_Data_File
für den Upload von Dateien. Diese Klasse ist eine leere Erweiterung, in der sichMage_Eav_Model_Attribute_Data_File
die meiste Logik befindet, wenn Sie sie überprüfen müssen.Ich glaube, für Dateitypen benötigen Sie dies, da Dinge wie die Nachbearbeitung von Bildern / Dateien, das Speichern des Uploads und das Darstellen / Laden des zugrunde liegenden DB-Typs varchar in der Attributklasse behandelt werden.
Wenn es aus irgendeinem Grund nicht geeignet ist (mir ist klar, dass ich ein Kundenattribut für die Adresse verwende, aber es sollte in Ordnung sein), erstellen Sie einfach ein neues Modell in einem Modul und lassen Sie es erben
Mage_Eav_Model_Attribute_Data_File
, zum Beispiel:Und machen Sie sich an die Arbeit
my_module/attribute_file
, indem Sie eine der benötigten Handhabungsmethoden überladen und Ihr Backend auf einstellen (vergessen Sie nicht, Ihr Modell auch in der Konfiguration zu löschen).Haftungsausschluss: Während ich diese Lösung schreibe, schaue ich mir technisch eine Magento 1.9-Site an und hatte meine Teammitglieder, die an der Magento 2-Doppelprüfungsklasse arbeiten, vorhanden und sollte funktionieren oder zumindest den Weg nach vorne angeben.
Ich hoffe es hilft!
PS> Ich habe diese Woche genug benutzerdefinierte Adressattribute gesehen, um ein Leben lang zu bestehen. Ich dachte, ich würde diesen Vorschlag machen, da ich in den letzten Wochen eine Reihe von Attributen gerollt habe !! Also Daumen drücken, es bringt deine Sache voran.
quelle