magento2添加客户属性
使用Magento 2.3.0 无论何时尝试保存客户,我都会收到错误,即新创建的属性是必需的,即使在我设置它们的值时也是如此 etc/extend_attributes.xmlmagento2添加客户属性,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'] 编
我最近也遇到了类似的问题,请尝试将其添加到“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
]);