オブザーバーからの顧客グループIDの設定に問題があります。このイベントは、customer_register_successイベントを介した新しいユーザーの作成をピックアップしています。イベントは私のオブザーバーに渡されます、例えば
public function registrationSuccess(Varien_Event_Observer $observer) {
// extract customer data from event
$customer = $observer->getCustomer()->getData();
Mage::log('COOKIES', json_encode($_COOKIE));
// a cookie should have been set with the membership id
if (isset($_COOKIE['membership_account_id'])) {
Mage::log('COOKIE SET, ASSOCIATING MEMBERSHIP');
// associate new account with membership, and upgrade user to membership status
$this->associateMembership($customer['entity_id'], $_COOKIE['membership_account_id']);
}
}
次に、associateMembershipメソッドを呼び出してグループIDを更新し、rms_idというカスタムの顧客属性を設定します。
public function associateMembership($customer_id, $account_id) {
// load customer model
$customer = Mage::getModel('customer/customer')->load($customer_id);
Mage::log('CUSTOMER DATA: ' . json_encode($customer->toArray()));
// upgrade customer to membership level, and set custom rms_id attribute
$customer
->setWebsiteId(Mage::app()->getWebsite()->getId())
->setGroupId(4)
->setRmsId($account_id);
// save
try {
$customer->save();
Mage::log('ACCOUNT ASSOCIATED: CUSTOMER ID = ' . $customer_id . ' ACCOUNT ID = ' . $account_id);
} catch (Exception $ex) {
Mage::log($ex);
}
}
何らかの理由で、エラーが戻ってくることはありません。正しいユーザーIDを取得していますが、すべてが機能しているようです。ただし、グループは設定されておらず、カスタムIDも設定されていません。
保存を実行できる別のイベントを使用する必要がありますか?