Eu tenho um atributo de cliente definido da seguinte maneira:
$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
]);
Minha pergunta é: qual é a diferença no atributo se eu definir user_defined
a false
? E em que situações devo definir user_defined
a true
ou false
?
fonte
Para adicionar a isso:
Se você adicionar atributos via,
Install-/ UpdateSchema
certifique-se de adicionar a'user_defined' => true
. Somente atributos que não são do sistema (por exemplo, is_user_defined = 1) podem ser usados para produtos configuráveis.fonte
De fato, noto uma grande diferença quando aprendi o Magento 1 . Se um atributo estiver definido como user_defined = true , ele não será criado na tabela eav_entity_attribute . Mas ainda assim você pode encontrá-lo na tabela eav_attribute . Se conjunto user_defined = false , então quando ele é criado ele aparecerá em ambos os eav_entity_attribute e eav_attribute tabelas. Mas, em troca, não sei por que isso faz a diferença / afeta.
Não tenho certeza sobre o Magento 2, mas acho que você pode verificá-lo facilmente e informar aos outros.
fonte
Se um atributo for definido como 'definido pelo usuário', o usuário poderá definir os valores das opções na interface do usuário do atributo.
No entanto, se você estiver usando um modelo de origem, 'user_defined' deve ser definido como false, caso contrário, as opções do modelo de origem não serão carregadas.
fonte
user_defined = true atributos geralmente são criados pelo gerenciador de catálogos para ter informações específicas do produto.
user_defined = false para os atributos padrão do Magento, necessários para que algumas funcionalidades funcionem ou para qualquer módulo que forneça algum recurso adicional com base no atributo, como sku , qty , website_ids , product_online são atributos do sistema necessários para gerenciar a quantidade e o escopo do produto, da mesma forma que é show_on_homepage pode ser algum atributo que faz algo no back-end para fornecer algum recurso e não deve ser excluído pelo usuário administrador que pode quebrar a funcionalidade.
fonte
Outra coisa que o usuário define é que ele determina se é possível editar ou não as opções do atributo na página de edição de atributos no back office, portanto, se você possui um atributo com rótulos específicos que não deseja que um usuário administrador altere, você deve definir "user_defined" como false.
fonte