产品添加到比较链接完成工作,但重定向到错误的URL原因的AJAX调用

时间:2013-07-24 13:22:17

标签: ajax magento

我正在编写一个自定义模块,用于显示可以加载AJAX的各种产品。

所以我正在调用我的一个控制器方法,然后回显填充由块填充的html。这一切都很好......

当产品添加到比较链接后出现问题Magento将我重新定向回上一个控制器方法而不是页面我的模块被添加。

是否有任何巧妙的方法来修复此行为而不是覆盖addAction()?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过挂钩比较控制器的postDispatch的观察者来实现。创建自己的模块。我们使用以下文件将其称为Easylife_Compare
app/etc/modules/Easylife_Compare.xml - 声明文件

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Compare>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
            </depends>
        </Easylife_Compare>
    </modules>
</config>

app/code/local/Easylife/Compare/etc/config.xml - 配置文件

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Compare>
            <version>0.0.1</version>
        </Easylife_Compare>
    </modules>
    <global>
        <models><!-- declar your own models-->
            <easylife_compare>
                <class>Easylife_Compare_Model</class>
            </easylife_compare>
        </models>
    </global>
    <frontend>
        <events>
            <controller_action_postdispatch_catalog_product_compare_add><!-- observe the post dispatch for adding to compare list -->
                <observers>
                    <easylife_compare>
                        <model>easylife_compare/observer</model>
                        <method>stopRedirect</method>
                    </easylife_compare>
                </observers>
            </controller_action_postdispatch_catalog_product_compare_add>
        </events>
    </frontend>
</config>

app/code/local/Easylife/Compare/Model/Observer.php - 你自己的观察者

<?php
class Easylife_Compare_Model_Observer{
    public function stopRedirect($observer){
        //get the real referrer from server var
        $referrer = Mage::app()->getRequest()->getServer('HTTP_REFERER');
        if ($referrer){
            //set your new redirect
            Mage::app()->getResponse()->setRedirect($referrer);
        }
        return $this;
    }
}

清除缓存并开始使用。这应该适用于正常的&#39;版本,没有由ajax和您的情况检索的产品。