顧客登録フォームへのカスタム属性の追加


8

2つの新しい顧客属性を作成する必要がありました。私は次のガイドに従っています:http : //www.fontis.com.au/blog/magento/know-more-about-your-customers-adding-custom-signup-attributes

これらの属性を作成します。データベースの「eav_attribute」テーブルを確認しましたが、両方の属性が存在することを確認できました。唯一のことは、チェックボックス属性の作成方法がわからなかったため、両方の属性を「はい/いいえ」として作成しました。

私が行った登録フォームにフィールドを表示する方法のコードに従ってください:

<li class="control">
<div class="input-box">
    <label for="publisheroffer"><?php echo $this->__('Publisher Offer') ?><span class="required">*</span></label><br />
    <input type="checkbox" name="publisheroffer" id="publisheroffer" value="<?php echo $this->htmlEscape($this->getFormData()->getPublisheroffer()) ?>" title="<?php echo $this->__('Publisher Offer') ?>" class="input-text" />
</div>
</li>

属性idは 'publisheroffer'です。アカウントが作成されると問題なく作成されますが、カスタム属性フィールドは変更されません。

この属性を登録ページのチェックボックスとしてどのように表示し、値を処理する方法を教えてください。

事前にすべての助けをありがとう。


Magentoカスタム登録フィールドモジュールは、magentoユーザー登録を拡張するための本当に素晴らしい方法であり、marketplacestore.webkul.com/Magento
Extensions/…の

回答:


12

登録フォームやその他のフォームページで属性を発行できるようにするには、それらのフォームで属性を使用できるように設定する必要があります。

これを行うには、以下のSQL設定に含めるサンプルコードを示します。私のMagentoユーザー名モジュールに使用した残りのコードは、githubアカウントにあります。

/* @var $installer Diglin_Username_Model_Entity_Setup */
$installer = $this;

/* @var $eavConfig Mage_Eav_Model_Config */
$eavConfig = Mage::getSingleton('eav/config');

$store = Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$attributes = $installer->getAdditionalAttributes();

foreach ($attributes as $attributeCode => $data) {
    $installer->addAttribute('customer', $attributeCode, $data);

    $attribute = $eavConfig->getAttribute('customer', $attributeCode);
    $attribute->setWebsite( (($store->getWebsite()) ? $store->getWebsite() : 0));

    if (false === ($attribute->getIsSystem() == 1 && $attribute->getIsVisible() == 0)) {
        $usedInForms = array(
            'customer_account_create',
            'customer_account_edit',
            'checkout_register',
        );
        if (!empty($data['adminhtml_only'])) {
            $usedInForms = array('adminhtml_customer');
        } else {
            $usedInForms[] = 'adminhtml_customer';
        }
        if (!empty($data['adminhtml_checkout'])) {
            $usedInForms[] = 'adminhtml_checkout';
        }

        $attribute->setData('used_in_forms', $usedInForms);
    }
    $attribute->save();
}

こんにちは、属性は登録フォームで許可されています。「テキスト」入力タイプについても同じプロセスを実行しましたが、登録を送信すると更新されます。私が抱えている問題は、登録フォームのチェックボックスである「はい/いいえ」入力タイプを使用する必要があることです。
user1669256

の値のときに、htmlタグinputに属性を設定しないのはなぜですか。削除して設定する必要があります(またはそれ以外の場合)checked$this->getFormData()->getPublisheroffer() == 1<input ... value="1" <?php echo ($this->getFormData()->getPublisheroffer() == 1): 'checked' : ''; ?>value="<?php echo $this->htmlEscape(...)"value="1"
SylvainRayé2013

0

次のコードを試して、チェックボックスのカスタム属性を作成できます。

$customerSetup->addAttribute(Customer::ENTITY, 'customer_approved', [
            'type' => 'int',
            'label' => 'Customer Approved',
            'input' => 'boolean',
            'required' => false,
            'visible' => true,
            'user_defined' => true,
            'sort_order' => 1001,
            'position' => 1001,
            'system' => 0,
        ]);

        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'customer_approved')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer'],
        ]);

        $attribute->save();

「チェックボックス」の代わりに入力「ブール」を使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.