无法更新 installData 中的用户属性
Posted
技术标签:
【中文标题】无法更新 installData 中的用户属性【英文标题】:cant update user attributes in installData 【发布时间】:2021-09-24 09:51:48 【问题描述】:我创建自定义模块。 在我尝试在 InstallData.php 中添加自定义属性之后 我从 setup_module 中删除了我的模块以运行安装数据,但是我没有看到任何结果或错误。 我尝试运行 setup:upgrade c:c c:f
我想为用户信息添加自定义属性。在用户注册帐户后更新该信息。此外,我希望能够从管理区域和前端设置更改它。但现在我无法在管理员中看到它。 我应该添加任何额外的代码来运行它吗?
<?php
namespace Vendor\RewardPoints\Setup;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Customer\Setup\CustomerSetupFactory;
use Magento\Customer\Model\Customer;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
/**
* @codeCoverageIgnore
*/
class InstallData implements InstallDataInterface
/**
* @var CustomerSetupFactory
*/
protected $customerSetupFactory;
/**
* @var AttributeSetFactory
*/
private $attributeSetFactory;
private $eavSetupFactory;
/**
* Init
*
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory, CustomerSetupFactory $customerSetupFactory, AttributeSetFactory $attributeSetFactory)
$this->eavSetupFactory = $eavSetupFactory;
$this->customerSetupFactory = $customerSetupFactory;
$this->attributeSetFactory = $attributeSetFactory;
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
/* Create customer attribute for front-end builder*/
/** @var CustomerSetup $customerSetup */
$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);
$customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
$attributeSetId = $customerEntity->getDefaultAttributeSetId();
/** @var $attributeSet AttributeSet */
$attributeSet = $this->attributeSetFactory->create();
$attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);
$customerSetup->addAttribute(Customer::ENTITY, 'my_telephone', [
'type' => 'int',
'label' => 'My telephone',
'input' => 'text',
'required' => false,
'visible' => true,
'user_defined' => true,
'sort_order' => 1000,
'is_used_in_grid' => 1,
'is_visible_in_grid' => 1,
'is_filterable_in_grid' => 1,
'is_searchable_in_grid' => 1,
'position' => 1000,
'default' => 0,
'system' => 0,
]);
$attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'my_telephone')
->addData([
'attribute_set_id' => $attributeSetId,
'attribute_group_id' => $attributeGroupId,
'used_in_forms' => ['adminhtml_customer'],
]);
$attribute->save();
【问题讨论】:
app/etc/config.php中的模块是否启用(设置为1)? 是的。问题是我没有模块:启用而不是设置:升级修复问题 【参考方案1】:在文章Magento 2: How to make customer attribute? 中一步一步描述。
客户属性可以以不同的形式使用,本示例将在管理客户编辑页面显示客户属性。您也可以使用其他形式。例如:
“used_in_forms” => [‘adminhtml_customer_address’, ‘customer_address_edit’, ‘customer_register_address’]
【讨论】:
是正确的。我必须模块:启用而不是 s:up。我只在做 s:up以上是关于无法更新 installData 中的用户属性的主要内容,如果未能解决你的问题,请参考以下文章
尝试更新firestore中的数组时出现“TypeError:无法读取未定义的属性'arrayUnion'”
无法使用 Vue 从 TypeScript 中的基类更新属性