magento2添加客户属性

magento2添加客户属性,magento2,Magento2,使用Magento 2.3.0 无论何时尝试保存客户,我都会收到错误,即新创建的属性是必需的,即使在我设置它们的值时也是如此 etc/extend_attributes.xml 我最近也遇到了类似的问题,请尝试将其添加到“used\u in\u forms”中 您可能必须删除该属性并重新安装它: 'used_in_forms' => ['adminhtml_customer', 'customer_account_edit', 'customer_account_create'] 编

使用Magento 2.3.0 无论何时尝试保存客户,我都会收到错误,即新创建的属性是必需的,即使在我设置它们的值时也是如此

etc/extend_attributes.xml



我最近也遇到了类似的问题,请尝试将其添加到“used\u in\u forms”中

您可能必须删除该属性并重新安装它:

'used_in_forms' => ['adminhtml_customer', 'customer_account_edit', 'customer_account_create']
编辑

哦,我认为这应该可以解决问题,只需检查我的installData和upgradeData脚本,它们都有system=>0。把它加进去

    $customerSetup->addAttribute('customer', 'customershipping_enabled', [
        'label'=>'Customer Shipping Enabled',
        'type' => 'int',
        'input' => 'select',
        'source' => Boolean::class,
        'required'=>true,
        'visible'=>true,
        'default' => 0,
        'position' => 198,
        'system' => 0
    ]);
它将与此问题相关:

函数getCustomAttributesMetadata正在所有EAV中循环 属性,并检查属性是否标记为“is_系统” 在“customer\u eav\u attribute”表中,我的 自定义属性

解决方案:

默认情况下,Magento将我的自定义属性标记为_system=1,因此 只需要在我的升级脚本中添加'system'=>false并执行 再次(在我直接从 数据库。)


此问题的根本原因是magento 2的设计行为

如果自定义属性设置为必需属性,则必须将其配置为显示在店面上,并显示在所有表单中

如果您希望自定义属性仅在某些特定表单上是必需的,则应使用扩展属性代替“required”=>false

扩展属性用于扩展自定义属性的功能

你只需要换一个

“必需”=>为真,

“必需”=>错误,

有关更多详细信息,请参阅以下链接:

我不希望这些属性显示在前端表单上,仅供管理员使用。奇怪的是,当我只添加属性而不添加表单adminhtml\u customer时,它们仍然显示在admin customer edit中。是的,你们是对的,在属性创建中添加'system'=>false解决了问题。请注意,这个问题不是必需的。这是因为他正在填写,但仍然没有保存..customershipping价格现在已正确保存,但是customershipping_enabled属性没有保存值“yes”。那是因为
'used_in_forms' => ['adminhtml_customer', 'customer_account_edit', 'customer_account_create']
    $customerSetup->addAttribute('customer', 'customershipping_enabled', [
        'label'=>'Customer Shipping Enabled',
        'type' => 'int',
        'input' => 'select',
        'source' => Boolean::class,
        'required'=>true,
        'visible'=>true,
        'default' => 0,
        'position' => 198,
        'system' => 0
    ]);