2014-08-30 4 views
0

Я сделал пользовательский модуль для наблюдателя на клиенте сохранить до события как для администратора и передней стороныВернутся сообщение об ошибке от наблюдателя Magento

Моего конфигурационного файл

<global> 
     <events> 
      <customer_save_before> 
       <observers> 
        <pavans_profile> 
         <type>singleton</type> 
         <class>Pavans_Profile_Model_Observer</class> 
         <method>customerSaveAfter</method> 
        </pavans_profile> 
       </observers> 
      </customer_save_before> 

     </events> 

    </global> 

Он называет мой наблюдатель, прежде чем данные клиента сохраняются

class Pavans_Profile_Model_Observer { 
    public function customerSaveAfter(Varien_Event_Observer $observer) 
    { 
     $controller = $observer->getControllerAction(); 
     $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); 
     $response = array('error' => -1, 'message' => $helper->__('Error')); 
     return $controller->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));  

    } 
} 

Я хочу передать сообщение об ошибке на форме клиента и остановки контроллера, чтобы сохранить данные о клиентах, но выше код показывает мне сообщение об ошибке

Call to a member function setFlag() on a non-object 

Так что я не могу получить объект контроллера.

+0

Hi Mayank ....... – Rajneesh071

ответ

0

У вас есть ошибка на

$controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); 

если вы используете setFlag, чем вам нужно записать как ниже

$controller->setFlag(Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); 

Ниже фрагмент кода функции

class Pavans_Profile_Model_Observer { 
    public function customerSaveAfter(Varien_Event_Observer $observer) 
    { 
     $controller = $observer->getControllerAction(); 

     $response = array('error' => -1, 'message' => $helper->__('Error')); 
     return $controller->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));  

    } 
} 
0
class Pavans_Profile_Model_Observer { 
    public function customerSaveAfter(Varien_Event_Observer $observer) 
    { 
     $controller = $observer->getEvent()->getControllerAction(); 
     $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); 
     $response = array('error' => -1, 'message' => $helper->__('Error')); 
     return $controller->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));  

    } 
} 

Я думаю, вам нужно добавить getEvent() к вашей строке кода. Я разместил модифицированный код.

+0

Показывает ту же ошибку, что и раньше, я использую magento 1.8.1 –

+0

Попробуйте это $ request = Mage :: app() -> getRequest(); $ action = $ request-> getActionName(); Mage :: app() -> getFrontController() -> getAction() -> setFlag ($ action, Mage_Core_Controller_Varien_Action :: FLAG_NO_DISPATCH, true); – oscprofessionals

Смежные вопросы