我遇到了问题,我不知道如何在我的自定义模块控制器中使用登录功能而不粘贴整个登录代码。我想通过我的控制器点击登录功能,登录功能返回会话/结果。
请任何1可以让我出去。
我有 1.4.2 版本的 magento。
我遇到了问题,我不知道如何在我的自定义模块控制器中使用登录功能而不粘贴整个登录代码。我想通过我的控制器点击登录功能,登录功能返回会话/结果。
请任何1可以让我出去。
我有 1.4.2 版本的 magento。
你试过什么?您看过标准的 magento 控制器 ( Mage_Customer_AccountController::loginPostAction
) 吗?这不是那么多的代码行..
$session = Mage::getSingleton('customer/session');
$session->login($username, $password);
并尝试...catch + 消息/错误处理
请查看 app/code/core/Mage/Customer/controllers/AccountController.php 和公共函数 loginPostAction(),您将清楚地了解 magento 如何处理异常
$session = Mage::getSingleton('customer/session');
try {
$session->login($username, $password);
if ($session->getCustomer()->getIsJustConfirmed()) {
$this->_welcomeCustomer($session->getCustomer(), true);
}
} catch (Mage_Core_Exception $e) {
switch ($e->getCode()) {
case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
$value = Mage::helper('customer')->getEmailConfirmationUrl($login['username']);
$message = Mage::helper('customer')->__('This account is not confirmed. <a href="%s">Click here</a> to resend confirmation email.', $value);
break;
case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
$message = $e->getMessage();
break;
default:
$message = $e->getMessage();
}
$session->addError($message);
$session->setUsername($login['username']);
} catch (Exception $e) {
// Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
}