Яка різниця між визначеним користувачем атрибутом та атрибутом, не визначеним користувачем?


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 = помилкові атрибути відомі як атрибути системи. Тож у 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 = справжні атрибути, як правило, створюються менеджером каталогу, щоб мати конкретну інформацію про продукт.
user_defined = false для атрибутів за замовчуванням Magento, необхідних для роботи деяких функціональних можливостей або будь-якого модуля, який надає якусь додаткову функцію на основі атрибутів, наприклад sku , qty , website_ids , product_online - це системні атрибути, необхідні для управління кількістю та обсягом продукту, так само як_featured або show_on_homepage може бути атрибутом, що робить щось у бекенді, щоб надати певну функцію, і не повинен видалятися користувачем адміністратора, що може порушити функціональність.


1

Інша річ, яку визначає користувач, - це те, що він визначає, чи можете ви редагувати параметри атрибуту зі сторінки редагування атрибутів у бек-офісі, для цього, якщо у вас є атрибут із конкретними мітками, які ви не бажаєте, щоб користувач адміністратора міняв, ви повинні встановити "user_defined" на значення false.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.