Quelle est la différence entre un attribut défini par l'utilisateur et un attribut non défini par l'utilisateur?

11

J'ai un attribut client défini comme suit:

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

Ma question est: quelle est la différence sur l'attribut si je mets user_definedà false? Et dans quelles situations je mis user_definedà trueou false?

PY Yick
la source

Réponses:

22

En fait, Magento user_defined = les faux attributs sont appelés attributs système. Magento a donc certains de leurs attributs système, que nous ne pouvons pas supprimer du panneau d'administration. Magento ne permet donc pas de supprimer l'attribut système. Nous pouvons les supprimer via la base de données mais ce n'est pas sûr.

Donc, les attributs qui sont très nécessaires pour faire fonctionner un système ce type d'attribut, nous pouvons créer en tant qu'attributs système. Mais du côté opposé, nous pouvons facilement supprimer les attributs définis par l'utilisateur du panneau d'administration.

J'espère que ça aide Merci.

Dhaval Solanki
la source
5

Les attributs système de Magento sont définis sur falsepour user_defined, donc nos attributs personnalisés doivent être définis sur true. Les attributs système ne peuvent pas être supprimés, donc si vous définissez falsesur user_defined , votre attribut fonctionnera comme attribut système.

Kishan Patadia
la source
1
Donc, vous voulez dire que c'est juste à titre indicatif, aucune différence réelle entre eux?
PY Yick
3

Pour ajouter à cela:

Si vous ajoutez des attributs via Install-/ UpdateSchemaassurez-vous d'en ajouter 'user_defined' => true. Seuls les attributs non système (par exemple, is_user_defined = 1) peuvent être utilisés pour les produits configurables.

CloudySi
la source
2

En fait, je remarque une grande différence lorsque j'ai appris Magento 1 . Si un attribut est défini sur user_defined = true , il ne sera pas créé dans la table eav_entity_attribute . Mais vous pouvez toujours le trouver dans la table eav_attribute . Si set user_defined = false , lors de sa création, il apparaîtra dans les tables eav_entity_attribute et eav_attribute . Mais en retour, je ne sais pas pourquoi cela fait la différence / affecte.

Je ne suis pas sûr de Magento 2, mais je suppose que vous pouvez le vérifier facilement et le faire savoir aux autres.

Nero
la source
1

Si un attribut est défini comme «défini par l'utilisateur», un utilisateur peut définir les valeurs des options dans l'interface utilisateur de l'attribut.

Cependant, si vous utilisez un modèle source, 'user_defined' doit être défini sur false, sinon les options du modèle source ne sont pas chargées.

NetStorm
la source
1

user_defined = les attributs vrais sont généralement créés par le gestionnaire de catalogue pour avoir des informations spécifiques au produit.
user_defined = false pour les attributs par défaut de Magento qui sont requis pour que certaines fonctionnalités fonctionnent ou tout module fournissant des fonctionnalités supplémentaires basées sur l'attribut, comme sku , qty , website_ids , product_online sont des attributs système requis pour gérer la quantité et la portée du produit, de la même manière que is_featured ou show_on_homepage peut être un attribut faisant quelque chose dans le backend pour fournir une fonctionnalité et ne devrait pas être supprimé par l'utilisateur admin qui pourrait casser la fonctionnalité.

Aman Srivastava
la source
1

Une autre chose que définit l'utilisateur est qu'il détermine si vous pouvez modifier ou non les options de l'attribut à partir de la page de modification d'attribut dans le back-office, donc si vous avez un attribut avec des étiquettes spécifiques que vous ne voulez pas qu'un utilisateur administrateur change, vous devez définir "user_defined" sur false.

Adrian Caragea
la source