Menambahkan atribut khusus ke formulir pendaftaran pelanggan

8

Saya perlu membuat dua atribut pelanggan baru. Saya telah mengikuti panduan dari: http://www.fontis.com.au/blog/magento/know-more-about-your-customers-adding-custom-signup-attributes

untuk membuat atribut ini. Saya telah memeriksa tabel 'eav_attribute' dalam database dan dapat mengkonfirmasi bahwa kedua atribut tersebut ada. Satu-satunya hal adalah saya tidak tahu cara membuat atribut kotak centang jadi saya telah membuat kedua atribut sebagai 'Ya / Tidak'.

mengikuti kode tentang cara menampilkan bidang pada formulir pendaftaran yang telah saya lakukan:

<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>

Di mana atribut id adalah 'publisheroffer'. Ketika akun dibuat, ia menciptakan baik-baik saja tetapi bidang atribut khusus tidak berubah.

Bagaimana cara menampilkan atribut ini sebagai kotak centang pada halaman pendaftaran, dan bagaimana memproses nilai-nilai.

Terima kasih atas semua bantuannya sebelumnya.

pengguna1669256
sumber
Modul bidang pendaftaran khusus Magento adalah cara yang sangat bagus untuk memperpanjang pendaftaran pengguna Magento, bekerja dengan sangat baik dengan modul lain serta seperti marketplace store.webkul.com/Magento-Extensions/…
webkul

Jawaban:

12

Untuk mengizinkan mempublikasikan atribut dalam formulir register dan beberapa lainnya membentuk halaman, Anda harus menetapkan bahwa atribut tersedia untuk formulir tersebut.

Untuk melakukannya di sini adalah kode sampel untuk dimasukkan ke dalam pengaturan sql Anda di bawah ini. Anda dapat menemukan sisa kode yang saya gunakan untuk modul Nama Pengguna Magento saya di akun github saya.

/* @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();
}
Sylvain Rayé
sumber
Hai, atribut diperbolehkan di formulir pendaftaran. Saya telah melakukan proses yang sama untuk jenis input 'teks' dan mereka memperbarui dengan baik saat mengirimkan pendaftaran. Masalah yang saya alami adalah bahwa saya perlu menggunakan tipe input 'ya / tidak' yang merupakan kotak centang pada formulir pendaftaran.
user1669256
Mengapa tidak menetapkan inputatribut tag html checkedketika nilai $this->getFormData()->getPublisheroffer() == 1. Anda akan memiliki <input ... value="1" <?php echo ($this->getFormData()->getPublisheroffer() == 1): 'checked' : ''; ?>Anda harus menghapus value="<?php echo $this->htmlEscape(...)"dan mengatur value="1"(atau yang lain)
Sylvain Rayé
0

Anda dapat mencoba kode berikut untuk membuat atribut khusus kotak centang.

$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();

Gunakan input 'boolean' bukan 'kotak centang'.

Henry Roger
sumber