В чем разница между определенным пользователем атрибутом и не определенным пользователем атрибутом?


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 установлены falseдля user_defined, поэтому наши пользовательские атрибуты должны быть установлены на true. Системные атрибуты не могут быть удалены , так что если вы установите falseна user_defined , ваш атрибут будет работать в качестве системного атрибута.


1
Таким образом, вы имеете в виду, что это просто для сведения, никаких реальных различий между ними?
PY Yick

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_attribute и eav_attribute . Но в свою очередь, я не знаю, почему это имеет значение / влияет.

Я не уверен насчет Magento 2, но, думаю, вы можете легко проверить это и сообщить другим.


1

Если атрибут установлен как «user_defined», тогда пользователь может определить значения параметров внутри пользовательского интерфейса атрибута.

Однако если вы используете исходную модель, тогда для user_defined должно быть установлено значение false, в противном случае параметры исходной модели не загружаются.


1

user_defined = true атрибуты, как правило, создаются менеджером каталога для получения информации о продукте.
user_defined = false для атрибутов Magento по умолчанию, которые требуются для работы некоторых функций или любого модуля, предоставляющего некоторые дополнительные функции на основе атрибута, такие как sku , qty , website_ids , product_online - системные атрибуты, необходимые для управления количеством и объемом продукта, аналогично is_featured или show_on_homepage может быть некоторым атрибутом, делающим что-то в бэкэнде, чтобы обеспечить некоторую функцию и не должен быть удален администратором, который может нарушить функциональность.


1

Еще одна вещь, которую определил пользователь, заключается в том, что он определяет, можете ли вы редактировать или нет параметры атрибута на странице редактирования атрибута в бэк-офисе, поэтому, если у вас есть атрибут с конкретными метками, которые вы не хотите, чтобы пользователь администратора изменял, Вы должны установить "user_defined" в false.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.