用户定义的属性和非用户定义的属性有什么区别?


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_definedtruefalse

Answers:


22

实际上,Magento user_defined = false属性被称为系统属性。因此,Magento具有其某些系统属性,我们无法从管理面板中将其删除。因此,magento不允许删除系统属性。我们可以通过数据库删除它们,但这并不安全。

因此,运行系统所必需的属性是我们可以将其创建为系统属性的属性类型。但相反的是,我们可以轻松地从管理面板中删除用户定义的属性。

希望对您有所帮助。


5

Magento系统属性设置falseuser_defined,因此我们的自定义属性应设置为true。系统属性无法删除,因此,如果将其设置falseuser_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_attributeeav_attribute表中。但是作为回报,我不知道为什么这会有所作为/影响。

我不确定Magento 2,但是我想您可以轻松验证一下并告知其他人。


1

如果将属性设置为“ user_defined”,则用户可以在属性用户界面内定义选项值。

但是,如果您使用的是源模型,则必须将“ user_defined”设置为false,否则不会加载源模型中的选项。


1

user_defined = true属性通常由目录管理器创建,以具有特定于产品的信息。对于某些功能正常工作或任何基于属性提供某些附加功能的Magento默认属性,
user_defined = false为Magento默认属性,例如skuqtywebsite_idsproduct_online是管理产品数量和范围所需的系统属性,与is_featured或show_on_homepage可以是一些在后端执行某些操作以提供某些功能的属性,并且不应由可能会破坏功能的管理员用户删除。


1

用户定义的另一件事是,它确定您是否可以在后台的属性编辑页面中编辑属性的选项,因此,如果您有一个带有特定标签的属性,而您不想让管理员用户更改,您应该将“ user_defined”设置为false。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.