我正在编写一个自定义模块,用于显示可以加载AJAX的各种产品。
所以我正在调用我的一个控制器方法,然后回显填充由块填充的html。这一切都很好......
当产品添加到比较链接后出现问题Magento将我重新定向回上一个控制器方法而不是页面我的模块被添加。
是否有任何巧妙的方法来修复此行为而不是覆盖addAction()?
谢谢!
答案 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和您的情况检索的产品。