我有以下控制器操作,如果没有用户登录,它将重定向到登录页面:
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版本1.6)
发布于 2011-10-20 13:15:27
找到解决办法了。
首先,setBeforeAuthUrl($url) 为“登录”和“新帐户创建”提供!
主要区别(以及我出现问题的原因)是,对于“新帐户创建”,Magento检查$url是否在当前商店的域名内,如果不是,则重定向到"My Account“页面。而“登录”的重定向则重定向到任何$url。
我不知道这是一个bug还是一个特性(我使用的是V1.6.0.0)。
因此,只需确保重定向到当前存储区的域名中的url --特别是在Multi配置中。
发布于 2011-10-17 02:48:04
您可以尝试使用以下扩展名。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);如果您想要这样做,最好的方法是覆盖控制器,添加配置选项,并使其成为一个模块:)
干杯
https://stackoverflow.com/questions/7779259
复制相似问题