Mam atrybut klienta zdefiniowany w następujący sposób:
$customerSetup->addAttribute(Customer::ENTITY, "attr_code", [
"type" => "varchar",
"backend" => "",
"label" => "Attribute Label",
"input" => "text",
"source" => "Magento\Eav\Model\Entity\Attribute\Source\Table",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => "",
'system' => 0,
'user_defined' => true
]);
Moje pytanie brzmi: jaka jest różnica w atrybucie Jeżeli ustawić user_defined
się false
? I w jakich sytuacjach należy ustawić user_defined
się true
lub false
?
źródło
Aby dodać do tego:
Jeśli dodajesz atrybuty za pośrednictwem,
Install-/ UpdateSchema
pamiętaj o dodaniu do'user_defined' => true
. W przypadku produktów konfigurowalnych można używać tylko atrybutów niesystemowych (np. Is_user_defined = 1).źródło
W rzeczywistości zauważam dużą różnicę, kiedy nauczyłem się Magento 1 . Jeśli atrybut ma wartość user_defined = true , nie zostanie utworzony w tabeli eav_entity_attribute . Ale nadal możesz go znaleźć w tabeli eav_attribute . Jeśli parametr user_defined = false , to po utworzeniu pojawi się zarówno w tabelach eav_entity_attribute, jak i eav_attribute . Ale w zamian nie wiem, dlaczego to robi różnicę.
Nie jestem pewien co do Magento 2, ale myślę, że możesz to łatwo zweryfikować i powiadomić innych.
źródło
Jeśli atrybut jest ustawiony jako „zdefiniowany przez użytkownika”, użytkownik może zdefiniować wartości opcji w interfejsie użytkownika atrybutu.
Jeśli jednak używasz modelu źródłowego, parametr „user_defined” musi mieć wartość false, w przeciwnym razie opcje z modelu źródłowego nie zostaną załadowane.
źródło
user_defined = prawdziwe atrybuty są generalnie tworzone przez menedżera katalogu w celu uzyskania informacji o produkcie
user_defined = false dla Magento domyślnych atrybutów, które są wymagane dla niektórych funkcjonalności do pracy lub dowolnego modułu zapewniającego kilka dodatkowych funkcji na podstawie atrybutu, jak sku , Ilość , website_ids , product_online są systemem atrybuty wymagane do zarządzania ilości i zakresu produktu, tak samo is_featured lub show_on_homepage może być atrybutem robiącym coś w backendu, aby zapewnić jakąś funkcję i nie powinien być usuwany przez administratora, który może zepsuć funkcjonalność.
źródło
Inną rzeczą zdefiniowaną przez użytkownika jest to, że określa, czy możesz edytować opcje atrybutu ze strony edycji atrybutów w back office, dlatego jeśli masz atrybut z określonymi etykietami, którego nie chcesz zmieniać administrator, powinieneś ustawić „user_defined” na false.
źródło