So erstellen Sie Kundenattribute magento 2, damit es beim Ausführen eines Skripts ohne Installationsskript funktioniert: -
/**
* @var \Magento\Eav\Setup\EavSetupFactory
*/
protected $eavEavSetupFactory;
public function __construct(
...
\Magento\Eav\Setup\EavSetupFactory $eavEavSetupFactory,
...
)
{
...
$this->eavEavSetupFactory = $eavEavSetupFactory;
...
}
public function createOrUpdateCustomerUDA($value, $input, $type)
{
/** @var CustomerSetup $customerSetup */
$customerSetup = $this->eavEavSetupFactory->create(['setup' => $setup]);
$customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
$attributeSetId = $customerEntity->getDefaultAttributeSetId();
/** @var $attributeSet AttributeSet */
$attributeSet = $this->attributeSetFactory->create();
$attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);
$customerSetup->addAttribute(Customer::ENTITY, $value, [
'type' => $type,
'label' => $value,
'input' => $input,
'required' => false,
'visible' => true,
'user_defined' => true,
'sort_order' => 1000,
'position' => 1000,
'system' => 0,
]);
//add attribute to attribute set
$attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, $value)
->addData([
'attribute_set_id' => $attributeSetId,
'attribute_group_id' => $attributeGroupId,
'used_in_forms' => ['adminhtml_customer'],
]);
$attribute->save();
}
Ich verwende diese Funktion in meinem benutzerdefinierten Modul, um Kundenattribute zu erstellen, aber es gibt mir den folgenden Fehler. Bitte leiten Sie mich, wie ich $setup
diese Funktion übergebe, damit sie einwandfrei funktioniert: -
Parse error: syntax error, unexpected '$setup' (T_VARIABLE), expecting ',' or ')' in Customer.php on line 540
magento2
custom-attributes
eav-attributes
Purushotam Sharma
quelle
quelle
Uncaught TypeError: Argument 1 passed to Magento\Setup\Module\DataSetup::__construct()
Magento\Framework\Setup\ModuleDataSetupInterface
Können Sie versuchen, dies in Konstrukt zu laden und seine Referenz als Argument für Setup-Argument zu übergebenAntworten:
Versuchen Sie folgenden Code:
quelle
Nach einer langen Zeit und dem Debuggen und dem Lesen der Blogging-Site / des Blogs fand ich die Lösung, um Attribute in Magento programmgesteuert zu erstellen und in diesen benutzerdefinierten Attributen Wert zu sparen.
Hier ist mein vollständiger Code, der in meinem benutzerdefinierten Modul funktioniert: -
Bitte verwenden Sie den obigen Code und lassen Sie mich wissen, wenn ein Problem auftritt. Viel Spaß beim Codieren :)
quelle