Hinzufügen eines benutzerdefinierten Attributs zum Kundenregistrierungsformular

8

Ich musste zwei neue Kundenattribute erstellen. Ich habe den Leitfaden von folgender Adresse befolgt: http://www.fontis.com.au/blog/magento/know-more-about-your-customers-adding-custom-signup-attributes

um diese Attribute zu erstellen. Ich habe die Tabelle 'eav_attribute' in der Datenbank überprüft und kann bestätigen, dass beide Attribute vorhanden sind. Das einzige war, dass ich nicht wusste, wie man ein Kontrollkästchenattribut erstellt, also habe ich beide Attribute als "Ja / Nein" erstellt.

Folgen Sie dem Code zum Anzeigen des Felds auf dem Registrierungsformular, das ich erstellt habe:

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

Wobei die Attribut-ID "Publisher-Angebot" lautet. Wenn das Konto erstellt wird, wird es gut erstellt, aber die benutzerdefinierten Attributfelder ändern sich nicht.

Wie zeige ich dieses Attribut als Kontrollkästchen auf der Registrierungsseite an und wie verarbeite ich die Werte?

Vielen Dank für die Hilfe im Voraus.

user1669256
quelle
Magento benutzerdefinierte Registrierung Feldmodul ist wirklich eine gute Möglichkeit, Magento Benutzerregistrierung zu erweitern, sehr gut mit anderen Modulen sowie Marktplatz store.webkul.com/Magento-Extensions/…
Webkul

Antworten:

12

Um ein Attribut im Registerformular und auf einigen anderen Formularseiten veröffentlichen zu können, müssen Sie festlegen, dass die Attribute für diese Formulare verfügbar sind.

Um dies zu tun, finden Sie hier einen Beispielcode, den Sie unten in Ihr SQL-Setup einfügen können. Den Rest des Codes, den ich für mein Magento-Benutzernamen-Modul verwendet habe, finden Sie in meinem Github-Konto.

/* @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é
quelle
Hallo, die Attribute sind auf den Registrierungsformularen zulässig. Ich habe den gleichen Vorgang für Texteingabetypen durchgeführt und sie werden beim Einreichen der Registrierung problemlos aktualisiert. Das Problem, das ich habe, ist, dass ich einen Ja / Nein-Eingabetyp verwenden muss, der ein Kontrollkästchen auf dem Registrierungsformular ist.
user1669256
Warum setzen Sie nicht inputdas Attribut in das HTML-Tag , checkedwenn der Wert von $this->getFormData()->getPublisheroffer() == 1. Sie haben <input ... value="1" <?php echo ($this->getFormData()->getPublisheroffer() == 1): 'checked' : ''; ?>Sie sollten entfernen value="<?php echo $this->htmlEscape(...)"und einstellen value="1"(oder sonst)
Sylvain Rayé
0

Sie können den folgenden Code verwenden, um ein benutzerdefiniertes Kontrollkästchenattribut zu erstellen.

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

Verwenden Sie die Eingabe 'boolean' anstelle von 'checkbox'.

Henry Roger
quelle