我正在寻找一种方法来挂接客户更改密码的事件。因此,如果有人在客户前端中更改密码,我想在某处发送电子邮件。
我确实在http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/上查阅了该列表,但是看起来没有什么可以更改密码。
我正在寻找一种方法来挂接客户更改密码的事件。因此,如果有人在客户前端中更改密码,我想在某处发送电子邮件。
我确实在http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/上查阅了该列表,但是看起来没有什么可以更改密码。
Answers:
感谢Fabian Blechschmidt,我想到了以下对我有用的东西(使用event customer_save_before
):
public function detectPwdChange(Varien_Event_Observer $observer) {
$event = $observer->getEvent();
$customer = $event->getCustomer();
$postData = Mage::app()->getRequest()->getPost();
if($customer instanceof Mage_Customer_Model_Customer && !$customer->isObjectNew()) {
if( $postData['change_password'] == 1 && $postData['current_password'] != $postData['password'] ) {
// Do something
}
}
return $this;
}
password
并且confirmation
在帖子数据中。已通过v1.9测试
看一下代码。
您可以使用该customer_save_after
事件,只需检查
/app/code/core/Mage/Customer/controllers/AccountController.php:724
$customer->setChangePassword(1);
也许此值已重置,那么您必须使用save_before
,但是我建议保存后发送邮件。因此,如果此值在after事件中不可读,则将其复制到另一个属性中,以手动添加到after事件中。
我想做类似的事情,但最终得到了他的代码:
我迷上了 controller_action_postdispatch_customer_account_resetpasswordpost
function resetpasswordpost(Varien_Event_Observer $observer) {
$customer_id = Mage::app()->getRequest()->getParam('id');
$customer = Mage::getModel('customer/customer')->load($customer_id);
}
我认为,比使用密码本身更干净,更“安全”!
Mage::app()->getRequest()->getParam('id')
在此事件中为null。也在派遣中。password
并confirmation
在Mage::app()->getRequest()->getParams()
tho中可用。(已通过v1.9测试)
/customer/account/resetpassword/?id=ab&token=xyz
吗?