Pregunta

Estoy tratando de obtener el valor de atributo personalizado al cliente en el observador, pero sin resultados. ¿Puede alguien ayudarme:

<frontend>
    <events>
        <customer_customer_authenticated>
            <observers>
                <ssd_customeractivation>
                    <type>singleton</type>
                    <class>SSD_CustomerActivation_Model_Observer</class>
                    <method>customerCustomerAuthenticated</method>
                </ssd_customeractivation>
            </observers>
        </customer_customer_authenticated>
    </events>
</frontend>

Observer.php

 class  SSD_CustomerActivation_Model_Observer
    {
        public function customerCustomerAuthenticated($observer)
        {
            /**
             * @var $customer Mage_Customer_Model_Customer
             */
            $customer = $observer->getEvent()->getModel();
            Mage::log($customer->getData('customer_active'));

        }
    }

Instalador:

$installer = $this;
$installer->startSetup();
$setup         = new Mage_Eav_Model_Entity_Setup('core_setup');
$attributeCode = 'customer_active';
$setup->addAttribute('customer', $attributeCode, array(
    'label'        => 'Is Active',
    'type'         => 'int',
    'input'        => 'boolean',
    'visible'      => true,
    'required'     => false,
    'position'     => 530,
));
$eavConfig   = Mage::getSingleton('eav/config');
$attribute   = $eavConfig->getAttribute('customer', 'is_active');
$usedInForms = array(
    'adminhtml_customer',
);
$attribute->setData('used_in_forms', $usedInForms);
$attribute->save();

$installer->endSetup();
¿Fue útil?

Solución

No aparece el valor, ya que no se establece para ese cliente. Cuando se agrega un atributo que el cliente, en un principio no hay ningún valor para él. Usted tiene que editar el cliente en el panel de administración y el conjunto de ese campo a un valor (sí o no, en su caso).
Tengo la sensación de que se va a decir que usted ya hizo eso y todavía no funciona. He aquí por qué.
Su script de instalación en realidad instalan 2 atributos: customer_active y is_active. El primero no está disponible en cualquier forma. El segundo (is_active) es el que aparece en el back-end, y se establece el valor de la misma. En el observador comprobar el valor de customer_active.
Creo que se necesita para cambiar esta línea en el instalador:

$attribute   = $eavConfig->getAttribute('customer', 'is_active');

A éste:

$attribute   = $eavConfig->getAttribute('customer', 'customer_active');

y volver a instalar el módulo.

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