Pregunta

que necesitaba para crear dos nuevos atributos de los clientes. He seguido la guía de: http: // www .fontis.com.au / blog / magento / know-más-sobre-su-clientes-adición-aduana-registro-atributos

Para crear estos atributos. He comprobado la tabla 'eav_attribute' en la base de datos y puedo confirmar que existe tanto atributo. La única cosa era que no sabía cómo crear un atributo casilla por lo que han creado los dos atributos como 'Sí / No'.

de seguir el código en la forma de mostrar el campo en el formulario de registro que he hecho:

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

Cuando el atributo id es 'publisheroffer'. Cuando se crea la cuenta se crea bien, pero los campos de atributos personalizados no cambian.

¿Cómo puedo mostrar este atributo como una casilla de verificación en la página de registro, y la forma de procesar los valores.

Gracias por toda la ayuda de antemano.

¿Fue útil?

Solución

Para permitir la publicación de un atributo en el formulario de registro y algunos otros forman página, usted tiene que establecer que el atributo (s) es / son disponibles a aquellas formas.

Para hacer eso aquí es un código de ejemplo para poner en su instalación de SQL a continuación. Puede encontrar el resto del código que utilicé para mi Magento nombre de usuario del módulo en mi cuenta de 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();
}

Otros consejos

Puede probar el siguiente código para crear un atributo personalizado casilla.

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

Usar la entrada 'booleano' en lugar de 'casilla de verificación'.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top