Php 在Magento observer中获取POST数据

Php 在Magento observer中获取POST数据,php,magento,Php,Magento,所以,我正在努力解决这个问题,我已经设置了一个观察者,以便在点击客户/帐户/登录时触发。Firebug清楚地表明,我正在将数据发布到此URL,而我无法在我的观察者方法中读取所述发布数据 观察者方法: public function checkCustomerLogin($observer) { Mage::log("event observed"); $controller = $observer->getControllerAction(); Mage::log(

所以,我正在努力解决这个问题,我已经设置了一个观察者,以便在点击客户/帐户/登录时触发。Firebug清楚地表明,我正在将数据发布到此URL,而我无法在我的观察者方法中读取所述发布数据

观察者方法:

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
,我总是忘记有一个存在。效果好多了。