登録属性にカスタム属性を追加しようとしています。そして、私は次のコードMagento2フロントエンドからの顧客登録中にカスタム属性が保存されない
class InstallData implements InstallDataInterface
{
/**
* @var EavSetupFactory Magento\Eav\Setup\EavSetupFactory
*/
private $eavSetupFactory;
/**
* @var $_eavConfig Config
*/
protected $eavConfig;
public function __construct(EavSetupFactory $eavSetupFactory, Config $eavConfig)
{
$this->eavSetupFactory = $eavSetupFactory;
$this->eavConfig = $eavConfig;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$eavSetup->addAttribute(
\Magento\Customer\Model\Customer::ENTITY,
'mobile',
[
'type' => 'varchar',
'label' => 'Mobile',
'input' => 'text',
'required' => false,
'system' => false,
'position' => 100,
'visible' => true,
'user_defined' => true
]
);
$mobile = $this->eavConfig->getAttribute(\Magento\Customer\Model\Customer::ENTITY, 'mobile');
//$forms = ['adminhtml_customer', 'checkout_register', 'customer_account_create', 'customer_account_edit'];
$forms = ['adminhtml_customer'];
$mobile->setData(
'used_in_forms',
$forms
);
$mobile->save();
}
}
、私は次のコードでレイアウトハンドラcustomer_account_createを使用していますフロントエンドで表示することで成功した属性を追加した
<referenceContainer name="form.additional.info">
<block class="Namespace\SMS\Block\Active" name="sms_block">
<action method="setTemplate" ifconfig="sms/actions/register" ifvalue="1">
<argument name="template" xsi:type="string">Namespace_SMS::sms/register.phtml</argument>
</action>
</block>
</referenceContainer>
今ではモバイル分野を示しています登録時にしかし、私はアカウントを作成しようとすると、モバイルフィールドの値は、アカウントを作成した後に空です。
注: 'customer_account_create'、 'customer_account_edit'とused_in_formを追加してからモバイル値を保存するとわかります。しかし、この後私は携帯電話のフィールドをレンダリングするために特定のテンプレートファイルを使用することはできません。
この問題を解決する方法を教えていただけますか?どうもありがとうございました。
のようなものです。のようなものですまたは、他の解決策が見つかった場合は、それを投稿してください。どうもありがとうございました。 – Abbas
カスタム顧客属性の更新は - > setSomeAttribute()のアプローチで有効ですか? – MagePsycho
@ Magento 2では、リポジトリデザインパターンをオーバーライドリポジトリの後に使用している可能性があるため、@MagePsychoは直接呼び出すことでカスタム属性についてはわかりません。しかし、あなたがこれを行う場合は、 - > setData( 'someAttribute'、value)。そうすればそれは保存されます。 – Abbas