Qual è la differenza tra un attributo definito dall'utente e un attributo non definito dall'utente?


11

Ho un attributo del cliente definito come segue:

$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
]);

La mia domanda è: qual è la differenza sull'attributo se impostato user_definedsu false? E in quali situazioni devo impostare user_definedper trueo false?

Risposte:


22

In realtà Magento user_defined = falsi attributi sono noti come attributi di sistema. Quindi Magento ha alcuni dei loro attributi di sistema, che non possiamo eliminare dal pannello di amministrazione. Quindi magento non consente l'eliminazione dell'attributo di sistema. Possiamo eliminarli attraverso il database ma non è sicuro.

Quindi attributi che sono altamente richiesti per far funzionare un sistema che tipo di attributo possiamo creare come attributi di sistema. Ma sul lato opposto, possiamo facilmente eliminare gli attributi definiti dall'utente dal pannello di amministrazione.

Spero che aiuti Grazie.


5

Gli attributi di sistema Magento sono impostati falsesu user_defined, quindi i nostri attributi personalizzati dovrebbero essere impostati su true. Gli attributi di sistema non possono essere eliminati, quindi se si imposta falsesu user_defined , l'attributo funzionerà come attributo di sistema.


1
Quindi vuoi dire che è solo indicativo, senza differenze reali tra loro?
PY Yick,

3

Per aggiungere a questo:

Se aggiungi attributi tramite Install-/ UpdateSchemaassicurati di aggiungere a 'user_defined' => true. Solo gli attributi non di sistema (ad es. Is_user_defined = 1) possono essere utilizzati per prodotti configurabili.


2

In effetti, noto una grande differenza quando ho imparato Magento 1 . Se un attributo è impostato su user_defined = true , non verrà creato nella tabella eav_entity_attribute . Ma puoi ancora trovarlo nella tabella eav_attribute . Se impostato user_defined = false , quando viene creato apparirà nelle tabelle eav_entity_attribute e eav_attribute . Ma in cambio, non so perché questo faccia la differenza / influenza.

Non sono sicuro di Magento 2, ma immagino che tu possa verificarlo facilmente e farlo sapere agli altri.


1

Se un attributo è impostato come 'user_defined', un utente può definire i valori delle opzioni all'interno dell'interfaccia utente dell'attributo.

Tuttavia, se si utilizza un modello di origine, 'user_defined' deve essere impostato su false, altrimenti le opzioni del modello di origine non verranno caricate.


1

user_defined = gli attributi veri sono generalmente creati dal gestore del catalogo per avere informazioni specifiche sul prodotto.
user_defined = false per gli attributi predefiniti di Magento richiesti per il funzionamento di alcune funzionalità o per qualsiasi modulo che fornisce alcune funzionalità aggiuntive basate su attributi, come sku , qty , website_ids , product_online sono attributi di sistema necessari per gestire la quantità e l'ambito del prodotto, allo stesso modo è_featured o show_on_homepage può essere un attributo che fa qualcosa nel backend per fornire alcune funzionalità e non deve essere eliminato dall'utente amministratore che potrebbe comprometterne la funzionalità.


1

Un'altra cosa definita dall'utente è che determina se è possibile modificare o meno le opzioni dell'attributo dalla pagina di modifica dell'attributo nel back office, pertanto se si dispone di un attributo con etichette specifiche che non si desidera modificare da un utente amministratore, dovresti impostare "user_defined" su false.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.