在Magento观察者中获取POST数据

mlu*_*udd 10 php magento

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

观察者方法:

public function checkCustomerLogin($observer) {
    Mage::log("event observed");
    $controller = $observer->getControllerAction();
    Mage::log(print_r($controller->getRequest()->getPost(), true));
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

示例日志结果:

2014-03-11T11:46:38+00:00 DEBUG (7): event observed
2014-03-11T11:46:38+00:00 DEBUG (7): Array
(
)
Run Code Online (Sandbox Code Playgroud)

我的观察者被配置为触发controller_action_predispatch_customer_account_login.很明显我在这里做错了,看到我怎么都拿不到我的POST数据(我已经尝试了一些其他绝望的方法,但从我可以告诉你这是如何"应该"得到一个控制器和观察者方法中的POST数据).

Moh*_*ora 26

使用 Mage::app()->getRequest()->getParams()

它将返回发送到被调用控制器操作的所有参数的数组

希望这对你有所帮助

  • 您在此处找不到任何发布数据,因为在帐户控制器的登录操作中,后期没有传递任何值.您应该使用您的观察者loginPostAction(我认为)来获取params中的值. (4认同)

Osc*_*als 6

而不是控制器使用应用程序

代替

Mage::log(print_r($controller->getRequest()->getPost(), true));
Run Code Online (Sandbox Code Playgroud)

改成

Mage::log(print_r(Mage::app()->getRequest()->getPost(), true));
Run Code Online (Sandbox Code Playgroud)

因此,您使用$ app来获取帖子详细信息,而不是控制器.