Dodałem kilka niestandardowych pól do formularza grupy klientów, używając upgradeSchema.php
.
Po tym stwierdziłem, że oryginalne pola, takie jak kod grupy klientów i identyfikator podatkowy, są zapisywane przy użyciu metod ustawiających w podanym interfejsie API. Zupełnie różni się od Magento 1.X, który po prostu używa setXXX () do zapisywania.
Odpowiedzi:
W takim przypadku należy zastosować mechanizm atrybutów rozszerzeń. Umożliwia rozszerzenie podstawowych interfejsów API o moduły innych firm. Ogólne kroki włączania nowego atrybutu rozszerzenia:
var
i uruchomieniu<project_root>/bin/magento setup:di:compile
odpowiedni setter i getter dla tego nowego atrybutu powinien pojawić się w\Magento\Customer\Api\Data\GroupExtensionInterface
(ten interfejs jest generowany automatycznie)\Magento\Customer\Api\GroupRepositoryInterface::save
,\Magento\Customer\Api\GroupRepositoryInterface::getById
(i wszelkie inne metody service jak to konieczne), aby zapisać / nowy atrybut obciążenia. Jako programista rozszerzeń tylko Ty wiesz, gdzie ten atrybut powinien być przechowywany, może to być dowolna tabela. Zobacz\Magento\Downloadable\Model\Plugin\AroundProductRepositorySave::aroundSave
jako przykładjoin
węzeł. Jeśli nie, pomiń to$customerGroup->getExtensionAttributes()->getMyAttribute()
gdziecustomerGroup
implementuje\Magento\Customer\Api\Data\GroupInterface
.setMyAttribute()
można również użyćPoniżej znajduje się przykład konfiguracji, którą należy wprowadzić
VendorName/ModuleName/etc/extension_attributes.xml
źródło
Nie zapominaj, że moduł potrzebuje
register.php
pliku i musisz go użyć,bin/magento module:enable VendorName_ModuleName
zanim się pojawi!źródło