从观察者Magento返回错误消息

时间:2014-08-30 10:25:54

标签: php 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

所以我无法获得控制器的对象。

2 个答案:

答案 0 :(得分: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));    

    }
}

答案 1 :(得分: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()。我已经修改了代码。