2013-01-16 88 views
0

我有一個特殊的情況下,用戶必須通過該帳戶註冊一個帳號註冊頁面(例如/客戶/帳號/創建/)檢出。完成後,並在他們購物車中有一款產品的情況下,我需要將其重定向回結帳屏幕。重定向創建後帳戶和產品在購物車

我現在有到位的觀察者偵聽到customer_register_success事件。觀察員升級用戶通過該代碼帳戶會員組:

class Hatclub_MembershipHandler_Model_Observer { 

    // members group id 
    const GROUP_ID = 4; 

    // called when a customer registers for the site 
    public function registrationSuccess(Varien_Event_Observer $observer) { 

     // extract customer data from event 
     $customer = $observer->getCustomer(); 

     // a cookie should have been set with the membership id 
     if (isset($_COOKIE['membership_account_id'])) { 

      $customer 
       ->setGroupId(self::GROUP_ID) 
       ->setRmsId($_COOKIE['membership_account_id']); 

     } 

     return $this; 

    } 

} 

有沒有辦法,我可以聽,更適合於我想要做的另一個事件?如果有幫助,我還有一個redirect_to cookie可用。

回答

1

大量的試驗和錯誤之後,我遇到了一個解決方案。既然我已經使用了customer_register_success事件,並與我的觀察修改用戶數據,我只好用另一個事件稱爲customer_save_after和它的工作就像一個魅力。

config.xml的事件塊

<customer_save_after> 
    <observers> 
     <customer_session_observer> 
      <class>hatclub_membership_handler/observer</class> 
      <method>customerSave</method> 
      <type>singleton</type> 
     </customer_session_observer> 
    </observers> 
</customer_save_after> 

observer.php方法

public function customerSave() { 

     // set redirect url from cookie, default to null 
     $redirect_url = (isset($_COOKIE['redirect_url'])) 
      ? isset($_COOKIE['redirect_url']) : null; 

     // if a redirect url was specified 
     if (isset($redirect_url)) { 

      // remove cookie to prevent infinite loop 
      unset($_COOKIE['redirect_url']); 

      // redirect to provided url 
      Mage::app()->getResponse() 
       ->setHeader('Location', $redirect_url) 
       ->sendHeaders(); 

     } 

} 

觀察者內的重定向是有點鬥爭,但我設法使用來完成它

Mage::app()->getResponse() 
    ->setHeader('Location', $redirect_url) 
    ->sendHeaders(); 

建議和批評歡迎。

相關問題