Aggiunta di attributo personalizzato al modulo di registrazione del cliente


8

Avevo bisogno di creare due nuovi attributi del cliente. Ho seguito la guida da: http://www.fontis.com.au/blog/magento/know-more-about-your-customers-adding-custom-signup-attributes

per creare questi attributi. Ho controllato la tabella "eav_attribute" nel database e posso confermare che entrambi gli attributi esistono. L'unica cosa era che non sapevo come creare un attributo della casella di controllo, quindi ho creato entrambi gli attributi come "Sì / No".

dal seguire il codice su come visualizzare il campo nel modulo di registrazione che ho fatto:

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

Dove l'id dell'attributo è "publisheroffer". Quando viene creato, l'account crea correttamente ma i campi degli attributi personalizzati non cambiano.

Come posso visualizzare questo attributo come una casella di controllo nella pagina di registrazione e come elaborare i valori.

Grazie per tutto l'aiuto in anticipo.


Il modulo di campo per la registrazione personalizzata di Magento è davvero un ottimo modo per estendere la registrazione degli utenti di Magento, lavorare molto bene con altri moduli così come marketplace store.webkul.com/Magento-Extensions/…
webkul

Risposte:


12

Per consentire la pubblicazione di un attributo nel modulo di registro e in alcune altre pagine del modulo, è necessario impostare che gli attributi siano / siano disponibili per tali moduli.

Per fare questo ecco un codice di esempio da inserire nella configurazione sql di seguito. Puoi trovare il resto del codice che ho usato per il mio modulo Username Magento sul mio account 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();
}

Salve, gli attributi sono consentiti nei moduli di registrazione. Ho fatto lo stesso processo per i tipi di input "testuali" e si aggiornano bene all'invio della registrazione. Il problema che sto riscontrando è che devo usare un tipo di input "sì / no" che è una casella di controllo nel modulo di registrazione.
user1669256,

Perché non impostare nel tag html inputl'attributo checkedquando il valore di $this->getFormData()->getPublisheroffer() == 1. Dovrai <input ... value="1" <?php echo ($this->getFormData()->getPublisheroffer() == 1): 'checked' : ''; ?>rimuovere value="<?php echo $this->htmlEscape(...)"e impostare value="1"(o altro)
Sylvain Rayé il

0

Puoi provare il codice seguente per creare un attributo personalizzato della casella di controllo.

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

Utilizzare l'input "booleano" anziché "casella di controllo".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.