在CheckOut中重定向

时间:2015-06-08 15:32:47

标签: magento

我目前正在使用magento支付模块,该模块必须检查用户个人资料/帐户中的某些字段是否已设置。

如果它们不存在/没有内容,我想要  1.重定向到/ customer / account / edit /  2.显示有关字段必须填写的通知

或者相反。

这是通过Magentos核心OnePage Checkout的AJAX调用初始化的。

我尝试了几件事,比如

Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account/edit/'));
    Mage::app()->getResponse()->sendResponse();
    exit;

等等。

从观察者我以某种方式得到一个重定向,但总是在/ default / checkout / cart结束(这是默认的?)

在模型中我在chromes网络选项卡中看到正确的页面被加载但不知何故它不会重定向到页面。No redirect but loaded to dev tools

如果您需要更多关于此问题的信息,请告诉我。

编辑1:摆脱了第二个Mage :: getURL,仍然没有重定向。

编辑2:我想如果我能以某种方式劫持' opcheckout.js的响应可以进行重定向。或者我应该添加一个额外的js听?我认为因为孔事是由AJAX调用触发的,重定向不会发生在正确的位置。欢迎提出更多想法。

编辑3:我试着想一想如何为所提到的opcheckout.js建立一个响应,它不会触发下一步但会触发重定向

1 个答案:

答案 0 :(得分:0)

解决了

解决方案:

创建替换
  • /app/code/core/Mage/Checkout/controllers/OnepageController.php

这应该是例如

  • 应用程序/代码/本地/ {命名空间} / {模块名} /controllers/OnepageController.php

特别注意" s"文件夹是复数而不是单数。花了我十分钟才知道为什么我的控制器不工作。

控制器应该像这样构建:

require_once Mage::getModuleDir('controllers', "Mage_Checkout").DS."OnepageController.php";
    class MOOD_BonimaScoreIdent_OnepageController extends Mage_Checkout_OnepageController {
       public function indexAction(){
            parent::indexAction();
       }

       public function savePaymentAction(){
         //just an example
        $result['redirect']=Mage::getUrl('customer/account/edit/');
        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
       return;
       }
    }

包含控制器覆盖的config.xml部分只是:

<frontend>
<routers>
                <checkout>
                    <args>
                        <modules>
                            <MyModuleName before="Mage_Checkout">Namespace_MyModuleName</MyModuleName>
                        </modules>
                    </args>
                </checkout>
        </routers
</frontend>