Я пытаюсь заставить Magento войти в систему через форму, которую я построил с помощью метода _forward (), который используется для передачи информации соответствующему контроллеру. Однако это не работает. Я не могу сказать, передаются ли правильные данные контроллеру. Зарегистрировав мои переменные, я могу видеть, что данные есть (имя пользователя, хешированный пароль, если учетная запись действительно существует и т. Д.). Согласно документации Magento, я вызываю метод правильно, с правильными параметрами.
Есть ли шаг, который я пропускаю?
Вот мой код и как он работает:
function customerLogin()
{
var email = jQuery('#login-email').val();
var password = jQuery('#login-password').val();
jQuery.post("orderkickoff/login/login", { 'login[username]': email, 'login[password]': password } );
}
Это jQuery на внешнем интерфейсе, который получает электронную почту и пароль, а затем отправляет эту информацию на МОЙ контроллер. Установив точки останова, я вижу, что мой контроллер вызывается правильно, и данные там.
class Namespace_OrderKickoff_LoginController extends Mage_Core_Controller_Front_Action
{
public function loginAction()
{
//if customer is not logged in
if(!Mage::getSingleton('customer/session')->isLoggedIn())
{
// get the email and load the customer by id
$login = $this->getRequest()->getPost('login');
$email = $login['username'];
$customer = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail($email);
$quote = Mage::getSingleton('checkout/cart')->getQuote();
//If the customer exists, log them in by forwarding to loginPost
if($customer->getId())
{
// just make the customer log in
$mysession = Mage::getSingleton('customer/session');
$mysession->setBeforeAuthUrl(Mage::getUrl('customer/account/index'));
$mysession->setAfterAuthUrl(Mage::getUrl('customer/account/index'));
$this->_forward('loginPost','account','customer');
}
else
{
Mage::log("There is no customer with that email");
}
}
$this->_redirect('customer/account/index');
return;
}
}
Это мой контроллер, который, как вы видите, получает сеанс клиентов, а затем пытается переслать данные в контроллер AccountController и вызвать функцию loginPost для входа пользователя в систему.
Это где процесс терпит неудачу. Я перебираю все и возвращаюсь к своей функции, но ничего не происходит. Перенаправления нет, страница просто остается там. Я не могу понять, почему это не регистрирует меня и затем перенаправляет меня.
Может кто-нибудь сказать мне, что я делаю не так?
Дайте мне знать, если вам нужна дополнительная информация.
Спасибо!
Задача ещё не решена.
Других решений пока нет …