Magento将referer param添加到getLoginPostUrl()

时间:2012-11-05 22:15:19

标签: php magento

我正在尝试创建一个表单,尽可能无缝地将登录集成到流程中。

我目前正在使用Mage::helper('customer')->getLoginPostUrl()登录表单,如果有更好的东西可以使用我都是耳朵,它可以工作,但它最终会出现在用户仪表板上。

我查找了该功能并寻找它 if($this->_getRequest()->getParam(self::REFERER_QUERY_PARAM_NAME)){ 但是我不确定如何以函数读取它的方式给它一个参数。

我注意到如果我使用Mage::helper('customer')->getLoginUrl()它会添加referer本身,所以我跟踪它并找到它如何将编码的referer添加到url并最终得到这个

<?php echo Mage::helper('customer')->getLoginPostUrl(); ?>referer/<?php echo Mage::helper('core')->urlEncode($this->getUrl("frontname/controller/function")); ?>

这给了我一个看起来像这个的网址

http://www.mysite.com/customer/account/loginPost/referer/aHR0cDovL3J5YW4uZGV2L3VzL2Zyb250bmFtZS9jb250cm9sbGVyL2Z1bmN0aW9uLw,,/

哪个有效,但我认为必须有更好的方法。有人有任何想法吗?

如果不是......这对我有用,以防其他人在寻找同样的事情。

4 个答案:

答案 0 :(得分:13)

我已经这样做了,希望这对某些人也有帮助:

Mage::getUrl('customer/account/login', array('referer' => Mage::helper('core')->urlEncode($this->getUrl("frontname/controller/function"))))

答案 1 :(得分:1)

我遇到了同样的问题。由于配置中的设置,您的客户将被重定向到仪表板。转到

  

系统&gt;配置&gt;客户&gt;客户配置&gt;登录选项

并在“登录后”将“将客户重定向到帐户信息中心”转为“否”。 Magento将开始收听该referrer参数,并在客户点击“登录”之前将其返回到他们所在的页面。

我知道这是一个老线程,可能很晚才能提供帮助,但这个问题可以解决这个问题,也许它会帮助别人。

答案 2 :(得分:1)

我会将 vladislav-mosalsky 的答案与来自 amardeep-aryan _current代码段结合起来,这样您只需要使用一个代码副本

Mage::app()->getFrontController()->getResponse()->setRedirect(
    Mage::getUrl('customer/account/login', array('referer' => Mage::helper('core')->urlEncode(
        Mage::getUrl('', array('_current' => true,'_use_rewrite' => true))
    )))
);

答案 3 :(得分:0)

我这样做了。

第1步。

系统&gt;配置&gt;客户&gt;客户配置&gt;登录选项

并在“登录”后将“将客户重定向到帐户信息中心”转为“”。 Magento将开始收听该referrer参数,并在客户点击“登录”之前将其返回到他们所在的页面。

第2步。

在header.phtml中

if(!Mage::helper('customer')->isLoggedIn() and $this->getRequest()->getControllerName() != 'account'){
     $referer = Mage::helper('core')->urlEncode(Mage::getUrl('', array('_current' => true,'_use_rewrite' => true)));
     Mage::getSingleton('core/session')->setCustomRefererUrl($referer);
}

第3步。

以登录表格

 <?php $referer = $this->getRequest()->getParam(Mage_Customer_Helper_Data::REFERER_QUERY_PARAM_NAME); 
    echo Mage::helper('core')->urlDecode($referer);
    ?>
    <form action="<?php echo Mage::getUrl('customer/account/loginpost', array('referer' => $referer)); ?>" method="post" id="login-form">

它应该可以正常工作。