在observer中保存自定义customer属性

时间:2016-11-10 10:53:04

标签: magento magento-1.9 observers

我创建了一个客户注册观察员。

在其中我有以下代码段。

public function customerRegistrationSuccess($observer)
{
        $customer = $observer->getEvent()->getCustomer();
        $deviceName="web";
     //log written
        $customer->setDevice_used($deviceName);
        $customer->save();
       //log written again
}

我有一个包含代码的安装文件:

<?php $installer = $this;
      $installer->startSetup();
      $this->addAttribute('customer', 'device_used', array(
'label'     => 'Device Used',
'visible'   => 1,
'input'     => 'text',
'type'      => 'varchar',
'required'  => 0,
"unique"    => 0,
'position'  => 120,
'sort_order'=> 80,

));
$attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'device_used');
  $attribute->setData('used_in_forms', array(
'adminhtml_customer',
'checkout_register',
'customer_account_create',
'customer_account_edit',
'adminhtml_checkout'
 ));    
            $attribute->setData('is_user_defined', 0);
 $attribute->save();

 $installer->endSetup();
 ?>

但没有创建此类属性。什么可能是错的?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为您在customerRegistrationSuccess中的设置调用不正确。它应该是

$customer->setDeviceUsed($deviceName);

或者你可以使用

$customer->setData('device_used',$deviceName);

两者都达到了同样的目的。

如果这不起作用,您需要检查安装脚本是否正确运行。检查core_resource数据库表以查看是否有模块的条目并从那里开始。