2014-07-07 2 views
0

내 제품 세부 정보 페이지에 "다이렉트 체크 아웃"버튼을 추가하고 싶습니다. 클릭하면 장바구니에 제품이 추가되고 checkout/onepage으로 리디렉션됩니다.장바구니에 추가 한 후 옵저버로 리디렉션하는 방법?

기본적으로 addtocart Magento의 장바구니 페이지로 리디렉션됩니다.

제품 페이지에 숨겨진 필드를 추가하고 javascript를 사용하여 직접 체크 아웃 버튼을 클릭하여 값을 추가했습니다. 그런 다음 관찰자가 그 값을 확인하고 체크 아웃으로 리디렉션합니다.

위의 로직을 옵저버 checkout_cart_add_product_complete에 구현했지만 체크 아웃 페이지로 리디렉션하지 않고 장바구니 페이지로 리디렉션합니다.

내 관찰자 기능은 다음과 같습니다

public function afterAddToCart(Varien_Event_Observer $observer) 
{ 
    $params = Mage::app()->getFrontController()->getRequest()->getParams(); 
    if(isset($params['dco']) && $params['dco'] == 1){ 
     Mage::app()->getResponse()->setRedirect(Mage::getUrl("checkout/onepage")); 
    } 
} 

나는 그것이 때문에 내 리디렉션 코드 뒤에 작동하지 않는 가정, 마 젠토는 다시 카트로 리디렉션 기본 addToCart와 코드를 실행합니다.

휴식을 취하고 결제 페이지로 리디렉션 할 수있는 방법이 있습니까?

답변

0

나는 당신이 응답을 보내지 않는다는 사실에 기인한다고 생각한다. 그것은 1.8와 함께 잘 작동

$response = Mage::app()->getFrontController()->getResponse(); 
$response->setRedirect(Mage::getUrl("checkout/onepage")); 
$response->sendResponse(); 

하지만 1.9

+0

과 같이 보일 것이다 다음

public function addToCartComplete(Varien_Event_Observer $observer) { // Send the user to the Item added page $response = $observer->getResponse(); $request = $observer->getRequest(); $response->setRedirect(Mage::getUrl('checkout/onepage')); Mage::getSingleton('checkout/session')->setNoCartRedirect(true); } 

귀하의 설정처럼 뭔가를 할 수 있습니다. 아직 장바구니 페이지로 전송 중입니다. 관찰자 데이터 흐름의 문제라고 생각합니다. 카트에 추가를 마친 후에는 옵서버에게 전달되지만 리디렉션을 한 후에 다시 카트 기능으로 돌아가서 카트로 리디렉션합니다. 어쨌든 우리는 관찰자를 깨뜨릴 필요가있을 수 있으므로 다시 카트 기능에 추가해서는 안됩니다. – Prashant

+0

이상하지만, 코드 뒤에 'die;'를 추가하면 작동합니다 : -/올바른 접근인가? '죽을 것 '을 추가 할 것인가 말 것인가? – Prashant

+0

이전에 목표를 이해하지 못해 죄송합니다 ... 장바구니를 자동으로 리디렉션되는 다른 견적으로 변경해야합니다. 카트를 견적으로 바꾸는 방법을 찾으려면 http://inchoo.net/ecommerce/magento/magento-quote-order-invoice-workflow/를보십시오. –

0

와 나는 일반적으로 당신은 그러나 다른 관찰자 할 수 있습니다

protected function _redirectToUrl($url, $code = 302) { 

    Mage::app()->getResponse() 
     ->setRedirect($url, $code) 
     ->sendResponse(); 
    exit; 
} 

갈은 것입니다 상상 : 내가 사용 sales_quote_save_after

+1

magento에는 'sales_quote_save_after'라는 이벤트가 없습니까? – Prashant

0

을 이 게시물의 답변 양식을 확인하십시오. https://stackoverflow.com/a/4053248/3018289

다음은 빠른 액세스를위한 사본입니다.

당신은 checkout_cart_add_product_complete 이벤트를 수신 관찰자를 만들 수 있고 거기에 당신이 아니, 작동하지 않는이

<frontend> 
    <events> 
    <checkout_cart_add_product_complete> 
     <observers> 
     <packagename_modulename_observer> 
      <type>singleton</type> 
      <class>packagename_modulename/observer</class> 
      <method>addToCartComplete</method> 
     </packagename_modulename_observer> 
     </observers> 
     </checkout_cart_add_product_complete> 
    </events> 
    </frontend> 
관련 문제