如何在 Magento 中覆盖忘记密码消息
Posted
技术标签:
【中文标题】如何在 Magento 中覆盖忘记密码消息【英文标题】:How to Override Forgot Password Message, in Magento 【发布时间】:2014-02-12 00:19:03 【问题描述】:我想覆盖前端站点中 Magento 的忘记密码消息:
-
当我在我的前端站点中单击忘记密码时,它显示:
如果有与 loremipsum@yahoo.com 关联的帐户,您将收到一封电子邮件,其中包含重置密码的链接。
我想用以下电子邮件验证覆盖此消息:
-
您的电子邮件地址 loremipsum@yahoo.com 不存在,或者
我们已在您的电子邮件地址 loremipsum@yahoo.com 中向您发送了一个重置链接
在 Magento 默认消息中是否有带有验证的替代解决方案?
谢谢,
【问题讨论】:
【参考方案1】:去下一课
Mage_Customer_AccountController
并且在这个函数内部存在这条消息
forgotPasswordPostAction()
你可以从上面的类中重写这个函数
【讨论】:
谢谢,那么我如何从 magento 中提取电子邮件地址。请检查代码。谢谢, 这个变量$email包含email-id,你可以使用它 好的。谢谢,我去看看! :)【参考方案2】:你可以在
中找到这个Mage_Customer_AccountController
然后转到函数forgotPasswordPostAction()
并用此代码替换 **
您的条件以 //自定义代码开始**
public function forgotPasswordPostAction()
$email = (string) $this->getRequest()->getPost('email');
if ($email)
if (!Zend_Validate::is($email, 'EmailAddress'))
$this->_getSession()->setForgottenEmail($email);
$this->_getSession()->addError($this->__('Invalid email address.'));
$this->_redirect('*/*/forgotpassword');
return;
/** @var $customer Mage_Customer_Model_Customer */
$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
->loadByEmail($email);
if ($customer->getId())
try
$newResetPasswordLinkToken = Mage::helper('customer')->generateResetPasswordLinkToken();
$customer->changeResetPasswordLinkToken($newResetPasswordLinkToken);
$customer->sendPasswordResetConfirmationEmail();
catch (Exception $exception)
$this->_getSession()->addError($exception->getMessage());
$this->_redirect('*/*/forgotpassword');
return;
else //custom code start
$this->_getSession()->addError(Mage::helper('customer')->__('Your email address %s does not exist.',Mage::helper('customer')->htmlEscape($email)));
$this->_redirect('*/*/');
return;
//custom code end
$this->_getSession()
->addSuccess(Mage::helper('customer')->__('We have sent you a reset link in your email address %s .', Mage::helper('customer')->htmlEscape($email)));
$this->_redirect('*/*/');
return;
else
$this->_getSession()->addError($this->__('Please enter your email.'));
$this->_redirect('*/*/forgotpassword');
return;
之后你可以覆盖它
【讨论】:
好的。谢谢,等等。我会检查一下。 :) 非常感谢!这是一个很大的帮助。该代码现在正在运行。将其标记为答案!以上是关于如何在 Magento 中覆盖忘记密码消息的主要内容,如果未能解决你的问题,请参考以下文章
向 Laravel 忘记密码表单添加额外问题并自定义其错误消息