我有以下控制器操作,如果没有用户登录,则会重定向到登录页面:
public function requireloginAction() {
if(!Mage::getSingleton('customer/session')->isLoggedIn()) {
// Not logged in
// Save requested URL for later redirection
Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());
header("Status: 301");
header('Location: '.Mage::helper('customer')->getLoginUrl()); // send to the login page
}
else {
// Logged in
.. do something ..
}
}
通过使用setBeforeAuthUrl,一旦用户登录,他/她就会被重定向回此操作。
问题:
如果用户不是登录,而是创建一个帐户,然后将他/她重定向到主页面,而不是重定向到setBeforeAuthUrl中设置的URL。
问题:
是否有类似于setBeforeAuthUrl的东西也适用于帐户创建?或者我怎样才能达到预期的效果?
(Magento Version 1.6)
答案 0 :(得分:0)
您可以尝试使用以下扩展程序。 http://www.magentocommerce.com/magento-connect/MagePsycho/extension/3763/custom_login_redirect
或者您也可以打开app / code / core / Mage / Customer / controllers / AccountController.php并在328行周围查找createPostAction()函数:
$url = $this->_welcomeCustomer($customer);
$this->_redirectSuccess($url);
到
$url = 'http://www.mycustomrediurecturl.com';
$this->_redirectSuccess($url);
如果你想这样做,那么好的方法是覆盖控制器添加配置选项并使其成为模块:)
干杯
答案 1 :(得分:0)
找到解决方案。
首先,对于“登录”和“新帐户创建”,setBeforeAuthUrl($ url)可以正常工作!
主要区别(以及我遇到问题的原因)是,对于“新帐户创建”,Magento会检查$ url是否在当前商店的域名范围内,如果不是,则重定向到“我的帐户“页面。虽然“登录”的重定向重定向到任何$ url。
我不知道这是一个错误还是一个功能(我使用的是V1.6.0.0)。
因此,请确保重定向到当前商店域名中的网址 - 尤其是在多商店配置中。