5

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

Mage::helper('customer')->getLoginPostUrl()目前正在使用登录表单,如果有更好的使用方法,我会全力以赴,它可以工作,但最终会出现在用户仪表板中。

我查找了函数及其查找, if($this->_getRequest()->getParam(self::REFERER_QUERY_PARAM_NAME)){ 但我不确定如何以函数将读取它的方式给它参数。

我注意到如果我使用Mage::helper('customer')->getLoginUrl()它会添加引用者本身,所以我跟踪它并发现它如何将编码的引用者添加到 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

4 回答 4

14

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

Mage::getUrl('customer/account/login', array('referer' => Mage::helper('core')->urlEncode($this->getUrl("frontname/controller/function"))))
于 2013-10-08T10:54:03.807 回答
2

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

系统 > 配置 > 客户 > 客户配置 > 登录选项

并将“登录后将客户重定向到帐户仪表板”设置为“否”。Magento 将开始收听该引荐来源参数并将您的客户带回到他们单击“登录”之前所在的页面。

我知道这是一个旧线程,可能为时已晚,但是这个问题对问题进行了排名,也许它会对其他人有所帮助。

于 2013-03-07T14:14:07.810 回答
2

我会将vladislav-mosalsky的答案与_current来自amardeep- aryan 的片段结合起来,这样您只需要一份代码即可使用。

Mage::app()->getFrontController()->getResponse()->setRedirect(
    Mage::getUrl('customer/account/login', array('referer' => Mage::helper('core')->urlEncode(
        Mage::getUrl('', array('_current' => true,'_use_rewrite' => true))
    )))
);
于 2014-10-03T00:38:05.580 回答
0

我已经这样做了。

步骤1。

系统 > 配置 > 客户 > 客户配置 > 登录选项

并将“登录后将客户重定向到帐户仪表板”设置为“”。Magento 将开始收听该引荐来源参数并将您的客户带回到他们单击“登录”之前所在的页面。

第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">

它应该可以正常工作。

于 2014-01-30T12:34:57.633 回答