2013-11-26 3 views
1

Я использую наблюдатель, чтобы поймать это событие: controller_action_postdispatch_checkout_onepage_saveBillingКак я могу перенаправить от наблюдателя с Magento

Я хочу это событие для того, чтобы проверить платежный адрес клиента.

Мой вопрос: Как я могу отправить сообщение пользователю на этом этапе. Когда нажата кнопка продолжения.

Я использовал: Mage::getSingleton('core/session')->addError('My message');

но сообщение не отображается, пока не обновите page.And вот второй вопрос. Как я могу перенаправить страницу с этой точки? У меня нет пользы: $this->_redirect('*/*/'); и жестко запрограммированные URL-адреса без везения. В идеале я хочу, чтобы клиент нажал кнопку продолжения, после некоторых проверок, которые я делаю, процесс, который нужно остановить сообщением. Наблюдатель проверяется, и он работает так, как он должен работать.

Надеется, что это имеет смысл ..

EDIT Это мой code.Just, чтобы убедиться, что я делаю это правильно: Модели/Observer

class Company_Restrictions_Model_Observer { 

    public function notifyUser($observer) { 
//Lot's off lines are tested here.Nothing seems to work.. 
$observer->getRequest()->setParam('return_url','http://www.google.com/'); 

} 
} 

config.xml

<?xml version="1.0"?> 

<config> 
    <modules> 
     <Company_Restrictions> 
      <version>0.1.0</version> 
     </Company_Restrictions> 
    </modules> 
    <global> 
    <models> 
     <company_restrictions> 
      <class>Company_Restrictions_Model</class> 
     </company_restrictions> 
    </models> 
    <helpers> 
     <company_restrictions> 
      <class>Company_Restrictions_Helper</class> 
     </company_restrictions> 
    </helpers> 
    <events> 
     <controller_action_postdispatch_checkout_onepage_saveBilling> 
     <observers> 
      <notify_user> 
      <type>singleton</type> 
      <class>Company_Restrictions_Model_Observer</class> 
      <method>notifyUser</method> 
      </notify_user> 
     </observers> 
     </controller_action_postdispatch_checkout_onepage_saveBilling>  
    </events> 
    </global> 
</config> 

EDIT AGAIN

После дедуплирования я узнал, что многие функции дают мне ошибку. Определенный метод ... для ex: _redirect() или Response() или Body() .. Кто-нибудь знает, почему?

ответ

0

Посмотрите @Magento - Redirect Customer from Observer Method

public function moduleMethod(Varien_Event_Observer $observer) 
{ 
    $observer->getRequest()->setParam('return_url','http://www.google.com/'); 
} 
+0

Еще не working..Is есть проблемы с событием я стараюсь поймать? – vbak

0

У меня есть наблюдатель, который успешно перенаправляет и я просто с помощью метода setRedirect:

public function moduleMethod(Varien_Event_Observer $observer) 
{ 
    // get the current front controller 
    $frontController = $observer->getEvent()->getFront(); 

    if(.....) 
    {   
     $newUrl = ...; 

     $frontController->getResponse()->setRedirect($newUrl); 
     Mage::app()->getResponse()->sendResponse(); 
     exit; 
    } 
} 
0

Просто для справки я дам вам ответ я получил от stackoverflow magento, который работает: Вот как мне удалось заставить его работать.

$controllerAction = $observer->getEvent()->getControllerAction(); 
$result = array(); 
$result['error'] = '-1'; 
$result['message'] = 'YOUR MESSAGE HERE'; 
$controllerAction->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); 

Magento Stackoverflow

0

Этот код будет работать:

$url = YOUR_URL; // e.g. Mage::getUrl('customer/account/login') 
Mage::app()->getResponse() 
      ->setRedirect($url) 
      ->sendResponse();