2016-11-10 15 views
0

カスタマー登録のためのオブザーバーを作成しました。カスタム顧客属性をオブザーバーに保存する

私は以下のコードセグメントを持っています。

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

をしかし、そのような属性が作成されていません。何が間違っている可能性がありますか?

ありがとうございます。

答えて

0

私はcustomerRegistrationSuccessのあなたのセットコールが間違っていると思います。それはまた、あなたがどちらの

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

を使用し、同じことを達成できる

$customer->setDeviceUsed($deviceName); 

でなければなりません。

これが機能しない場合は、インストールスクリプトが正しく実行されたことを確認する必要があります。 core_resource DBテーブルをチェックして、モジュールのエントリがあるかどうかを確認し、そこから進みます。

関連する問題