Php 在Magento observer中获取POST数据
所以,我正在努力解决这个问题,我已经设置了一个观察者,以便在点击客户/帐户/登录时触发。Firebug清楚地表明,我正在将数据发布到此URL,而我无法在我的观察者方法中读取所述发布数据 观察者方法:Php 在Magento observer中获取POST数据,php,magento,Php,Magento,所以,我正在努力解决这个问题,我已经设置了一个观察者,以便在点击客户/帐户/登录时触发。Firebug清楚地表明,我正在将数据发布到此URL,而我无法在我的观察者方法中读取所述发布数据 观察者方法: public function checkCustomerLogin($observer) { Mage::log("event observed"); $controller = $observer->getControllerAction(); Mage::log(
public function checkCustomerLogin($observer) {
Mage::log("event observed");
$controller = $observer->getControllerAction();
Mage::log(print_r($controller->getRequest()->getPost(), true));
return $this;
}
日志结果示例:
2014-03-11T11:46:38+00:00 DEBUG (7): event observed
2014-03-11T11:46:38+00:00 DEBUG (7): Array
(
)
我的观察者配置为在控制器\u操作\u预发布\u客户\u帐户\u登录时触发。显然,我在这里做了一些错误的事情,因为我无法获取我的POST数据(我已经尝试了其他一些绝望的方法,但从我所能告诉你的是,你“应该”如何在一个观察者方法中获取控制器和POST数据)。使用Mage::app()->getRequest()->getParams()
它将返回发送到被调用控制器操作的所有参数的数组
希望这能帮助你代替控制器使用应用程序
而不是
Mage::log(print_r($controller->getRequest()->getPost(), true));
改为
Mage::log(print_r(Mage::app()->getRequest()->getPost(), true));
因此,您使用$app而不是controller来获取帖子详细信息。刚才尝试了该方法,但仍然是一个空数组。请尝试Mage::log(Mage::app()->getRequest()->getControllerName());和Mage::log(Mage::app()->getRequest()->getActionName());并检查日志,确定您所需的控制器是否被观察者捕获。控制器名称为account
,操作名称为login
。您在此处找不到任何post数据,因为在account controller的登录操作中,post中没有传递任何值。你应该使用你的LoginPostation观察器(我想)来获取参数中的值。啊,loginPost
,我总是忘记有一个存在。效果好多了。