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?

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.


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.


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).


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.


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.


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.