2013-05-14 2 views
1

Observer에서 Magento에서 작업 리디렉션을 만드는 데 문제가 있습니다. 컨트롤러 에서처럼 예외가 Observer에서 작동하지 않는 이유를 이해해야합니다. Observer에서 Magento 리디렉션

제어기에서 수행 전형적인

예외는 (adminhtml 컨트롤러) 어딘가에는 관찰자 리디렉션 아래 방법에 대해 판독 블로그

$message = $this->__('Exception Message.'); 
Mage::getSingleton('adminhtml/session')->addError($message); 
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
return; 

아래와 같다.

Mage::getSingleton('core/session')->addError('Exception Message.'); 
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/cart')); 
Mage::app()->getResponse()->sendResponse(); 
exit; 

관찰자와 컨트롤러로 수행 할 때 기본 리디렉션 차이점을 이해하지 못합니다.

옵저버에서 컨트롤러 리디렉션을 사용할 수없는 이유는 무엇입니까?

제발 도와주세요.

미리 감사드립니다.

+0

나는 이것이 당신이 찾고있는 것 같아요 : http://stackoverflow.com/questions/9749005/magento-redirect-customer-from-observer-method – JNDPNT

+0

$ observer-> getRequest() -> setParam (' return_url ','http : //www.google.com/ '); 위의 코드는 참조 된 URL에서 작동하지 않습니다. – Slimshadddyyy

+0

약 : $ this-> getResponse() -> setRedirect ($ returnUrl); (getFrontController() 대신) – JNDPNT

답변

0

아래 링크를 클릭하고 코드 을 게시하여 도움을받을 수 있습니다.

출처 : http://aaronbonner.io/post/418012530/redirects-in-magento-controllers

리디렉션 젠토에서 컨트롤러 젠드 프레임 워크 컨트롤러에서 , 당신은 ZF는 일반적으로 엮어 다른 마법의 일부와 함께 ViewHelper 기본값을 사용하지 않을 것입니다 html로 이외의 출력 뭔가.

Magento에서는 컨트롤러 리디렉션을 할 때도 똑같이 적용됩니다.

PHP 5.2에서 리디렉션이 무시 된 것처럼 보였습니다. 반면 Macports 5.3 설정은 무시되었습니다.

MyPackage/MyModule/controllers/MyController.php에서 : 나는 트릭을 잃어버린, 그래서 젠토에서 적절한 리디렉션은 다음과 같이 이루어집니다 판명 setFlag 호출없이

$this->_redirectUrl($this->getUrl('http://www.someurl.com/someresource')); 
$this->setFlag('', self::FLAG_NO_DISPATCH, true); 
return $this; 

, 당신의 리디렉션은 무시됩니다. 반환 호출은 더 이상의 코드 실행을 중지하고 리디렉션이 실행되도록합니다.

관련 문제