ユーザー定義属性と非ユーザー定義属性の違いは何ですか?


11

次のように定義された顧客属性があります。

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

私の質問は:に設定user_definedした場合、属性の違いは何falseですか?そして、どのような状況で私はまたはに設定user_definedするtrue必要がありfalseますか?

回答:


22

実際にMagentoのuser_defined = false属性は、システム属性と呼ばれます。したがって、Magentoにはいくつかのシステム属性があり、管理パネルから削除することはできません。したがって、magentoはシステム属性の削除を許可しません。データベースから削除することはできますが、安全ではありません。

したがって、システムを実行するために非常に必要とされる属​​性で、そのタイプの属性をシステム属性として作成できます。しかし反対側では、ユーザー定義の属性を管理パネルから簡単に削除できます。

ありがとうございます。


5

Magentoシステム属性はuser_definedに設定されfalseているため、カスタム属性をに設定する必要があります。システム属性は削除できないため、user_definedに設定すると、属性はシステム属性として機能します。truefalse


1
つまり、それは単なる目安であり、実際の違いはありませんか?
PY Yick、2017

3

これに追加するには:

経由で属性を追加する場合は、Install-/ UpdateSchema必ずに追加してください'user_defined' => true。構成可能な製品に使用できるのは、非システム属性(is_user_defined = 1など)のみです。


2

実際、Magento 1を学んだとき、私は大きな違いに気づきました。属性がuser_defined = trueに設定されている場合、属性はテーブルeav_entity_attributeに作成されません。しかし、それでもテーブルeav_attributeで見つけることができます。セットが場合USER_DEFINED = falseが、それが作成されますと、それは両方に表示されますeav_entity_attributeeav_attributeテーブル。しかし、見返りに、これが違いを生む/影響を与える理由はわかりません。

Magento 2についてはわかりませんが、簡単に確認して他の人に知らせることができると思います。


1

属性が「user_defined」として設定されている場合、ユーザーは属性ユーザーインターフェイス内でオプション値を定義できます。

ただし、ソースモデルを使用している場合は、「user_defined」をfalseに設定する必要があります。そうでない場合、ソースモデルのオプションは読み込まれません。


1

user_defined = true属性は、通常、製品固有の情報を持つためにカタログマネージャーによって作成されます。
USER_DEFINED = falseの Magentoのデフォルトのような属性に基づいていくつかの追加機能を提供する仕事、または任意のモジュールにいくつかの機能のために必要な属性のためのSKU数量website_idsproduct_onlineはシステム、製品の量と範囲を管理するために必要なのと同じ方法でis_featuredまたは属性でありますshow_on_homepageは、何らかの機能を提供するためにバックエンドで何かを行う何らかの属性である可能性があり、機能を損なう可能性がある管理者ユーザーによって削除されるべきではありません。


1

ユーザーが定義するもう1つのことは、バックオフィスの属性編集ページから属性のオプションを編集できるかどうかを決定することです。そのため、管理ユーザーに変更させたくない特定のラベルを持つ属性がある場合、 「user_defined」をfalseに設定する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.