¿Cuál es la diferencia entre un atributo definido por el usuario y un atributo no definido por el usuario?

11

Tengo un atributo de cliente definido de la siguiente manera:

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

Mi pregunta es: ¿cuál es la diferencia en el atributo si fijo user_defineda false? Y en el que las situaciones que debería establecer user_definedpara trueo false?

PY Yick
fuente

Respuestas:

22

En realidad, Magento user_defined = los atributos falsos se conocen como atributos del sistema. Por lo tanto, Magento tiene algunos de sus atributos del sistema, que no podemos eliminar del panel de administración. Entonces magento no permitirá que se eliminen los atributos del sistema. Podemos eliminarlos a través de la base de datos, pero no es seguro.

Entonces, los atributos que son muy necesarios para ejecutar un sistema que tipo de atributo podemos crear como atributos del sistema. Pero en el lado opuesto, podemos eliminar fácilmente los atributos definidos por el usuario desde el panel de administración.

Espero que ayude Gracias.

Dhaval Solanki
fuente
5

Los atributos del sistema Magento están configurados falsepara user_defined, por lo que nuestros atributos personalizados deben configurarse en true. Los atributos del sistema no se pueden eliminar, por lo que si se configura falseen user_defined , su atributo funcionará como atributo del sistema.

Kishan Patadia
fuente
1
¿Quieres decir que es solo para indicación, no hay diferencias reales entre ellos?
PY Yick
3

Para agregar a esto:

Si agrega atributos a través de Install-/ UpdateSchemaasegúrese de agregar a 'user_defined' => true. Solo los atributos que no son del sistema (p. Ej. Is_user_defined = 1) pueden usarse para productos configurables.

Nublado Si
fuente
2

De hecho, noté una gran diferencia cuando aprendí Magento 1 . Si un atributo se establece como user_defined = true , no se creará en la tabla eav_entity_attribute . Pero aún puede encontrarlo en la tabla eav_attribute . Si se establece user_defined = false , cuando se cree, aparecerá en las tablas eav_entity_attribute y eav_attribute . Pero a cambio, no sé por qué esto hace la diferencia / afecto.

No estoy seguro acerca de Magento 2, pero supongo que puede verificarlo fácilmente y dejar que otros lo sepan.

Nerón
fuente
1

Si un atributo se establece como 'definido por el usuario', un usuario puede definir los valores de las opciones dentro de la interfaz de usuario del atributo.

Sin embargo, si está utilizando un modelo fuente, entonces 'user_defined' debe establecerse en falso; de lo contrario, las opciones del modelo fuente no se cargarán.

NetStorm
fuente
1

user_defined = true atributos generalmente son creados por el administrador de catálogo para tener información específica del producto.
user_defined = false para los atributos predeterminados de Magento que se requieren para que algunas funcionalidades funcionen o cualquier módulo que proporcione alguna característica adicional basada en un atributo, como sku , qty , website_ids , product_online son atributos del sistema necesarios para administrar la cantidad y el alcance del producto, de la misma manera se_featured o show_on_homepage puede ser un atributo que hace algo en el backend para proporcionar alguna característica y no debe ser eliminado por el usuario administrador que puede romper la funcionalidad.

Aman Srivastava
fuente
1

Otra cosa que definió el usuario es que determina si puede editar o no las opciones del atributo desde la página de edición de atributos en la oficina administrativa, por lo tanto, si tiene un atributo con etiquetas específicas que no desea que cambie un usuario administrador, debe establecer "user_defined" en falso.

Adrian Caragea
fuente