2013-07-24 12 views
0

我正在寫一個自定義模塊,用於顯示各種可以加載AJAX的產品。產品加入比較鏈接做的工作,但重定向到錯誤的網址導致AJAX呼叫

所以我打電話給我的控制器方法之一,然後回聲塊填充的HTML填充。這一切都很好...

當產品添加到比較鏈接時出現問題Magento重定向我回到上次控制器方法調用,而不是頁面我的模塊被添加。

是否有任何干淨的方法來解決這種行爲,而不是覆蓋addAction()?

謝謝!

回答

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; 
    } 
} 

清除緩存並放手。這應該工作在'正常'版本,沒有產品檢索ajax和你的情況。