Jaka jest różnica między atrybutem zdefiniowanym przez użytkownika a atrybutem nie zdefiniowanym przez użytkownika?

11

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_definedsię false? I w jakich sytuacjach należy ustawić user_definedsię truelub false?

PY Yick
źródło

Odpowiedzi:

22

W rzeczywistości Magento user_defined = fałszywe atrybuty są znane jako atrybuty systemowe. Magento ma więc część swoich atrybutów systemowych, których nie możemy usunąć z panelu administracyjnego. Więc magento nie pozwoli na usunięcie atrybutu systemowego. Możemy je usunąć za pomocą bazy danych, ale nie jest to bezpieczne.

Atrybuty, które są bardzo wymagane do uruchomienia systemu tego typu atrybutu, możemy utworzyć jako atrybuty systemowe. Ale z drugiej strony możemy łatwo usunąć atrybuty zdefiniowane przez użytkownika z panelu administracyjnego.

Mam nadzieję, że to pomaga Dzięki.

Dhaval Solanki
źródło
5

Atrybuty systemowe Magento są ustawione falsena user_defined, więc nasze niestandardowe atrybuty powinny być ustawione na true. Atrybuty systemowe nie mogą być usunięte, więc jeśli ustawisz falsedo user_defined Twój atrybut będzie działać jako atrybutu systemowego.

Kishan Patadia
źródło
1
Masz na myśli, że to tylko dla orientacji, żadnych rzeczywistych różnic między nimi?
PY Yick
3

Aby dodać do tego:

Jeśli dodajesz atrybuty za pośrednictwem, Install-/ UpdateSchemapamię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).

Pochmurnie Si
źródło
2

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.

Nero
źródło
1

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.

NetStorm
źródło
1

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ść.

Aman Srivastava
źródło
1

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.

Adrian Caragea
źródło