2012-07-16 49 views
2

我想在我的自定義html塊中重定向到特定的URL。Magento從HTML塊中重定向

我嘗試:

SetEnvIf之後主機www.myurl.dev MAGE_RUN_CODE =基本
SetEnvIf之後主機WWW:

class Mage_Page_Block_Html_World extends Mage_Core_Block_Template { 
function __construct() 
{ 
    $i = 0; 
    parent::__construct(); 
    $this->setTemplate('page/html/world.phtml'); 
    $this->setCookie(); 
} 

public function setCookie() 
{ 
    $lang = $this->getLanguageCode(); 
    if(isset($_GET['country'])) { 
     $country = $_GET['country']; 
     Mage::getModel('core/cookie')->set('country', $country); 
    } else { 
     $country = Mage::getModel('core/cookie')->get('country'); 
    } 
    /*Redirect to cookie url*/ 
    if($country) { 
     try { 
      $url = "http://myurl.dev/".$country."/"; 
      Mage::app()->getFrontController()->getResponse()->setRedirect($url); 
     } catch (Exception $e) { 
      echo 'Exception: ', $e->getMessage(), "\n"; 
     } 
    } 
} 

因爲我在我的.htaccess使用使用MultiStore的配置。 myurl.dev MAGE_RUN_TYPE =網站
SetEnvIf之後主機^ myurl.dev MAGE_RUN_CODE =基本
SetEnvIf之後主機^ myurl.dev MAGE_RUN_TYPE =網站

SetEnvIf之後主機www.myurl1.dev MAGE_RUN_CODE = VS
SetEnvIf之後主機www.myurl1.dev MAGE_RUN_TYPE =網站
SetEnvIf之後主機^ myurl1.dev MAGE_RUN_CODE = VS
SetEnvIf之後主機^ myurl1.dev MAGE_RUN_TYPE =網站

該問題: 有了這個重定向我得到錯誤310:太多的重定向。 我無法弄清楚如何解決這個問題。

+0

試圖解釋爲什麼你這樣做然後其他人可以建議如何做到這一點,也許理解你爲什麼失敗 – 2012-07-16 09:48:15

+0

這個邏輯應該是在一個控制器,而不是在一個塊。 – Nick 2012-07-16 10:25:30

+0

爲什麼我這樣做:我有一個登陸頁面,用戶可以選擇他們的語言。語言代碼存儲在cookie中,如果用戶再次輸入基本網址,用戶將被重定向到正確的商店。 html塊通過getChildHtml('world')加載到我的自定義模板文件中。 我用我的phtml文件中的一個小小的javascript解決了這個問題,但是如果s.o.知道一個解決方案,在這個HTML塊做到這一點,我會apprechiate它。 – s4lfish 2012-07-16 10:28:40

回答

1

太多的重定向表明無限循環。這聽起來像是你在每個頁面上加載這個塊 - 這意味着即使一旦用戶被重定向,該塊再次加載並仍然嘗試重定向它們。需要

我建議你爲國檢改變:

if($country) { 

這個檢查需要故障一旦用戶被重定向,避免再次重定向被髮送,現在它看起來像它甚至返回true重定向後。

+0

謝謝安德魯。 我現在檢查是否(currentUrl == baseURL){},現在它工作。 – s4lfish 2012-07-16 11:21:17

4

鑑於框架架構,這是一種不恰當的方法。作爲開發人員,您可以使用幾種機制來解析代碼並觸發重定向。當請求控制器層和事件觀察者系統更合適時,您現在的方法是使用View層來觸發重定向。

controller_action_predispatch事件是在所有請求範圍上都可用的事件,並且每個路由都有針對性的predispatch事件。您可以使用這些和Mage_Core_Controller_Request_Http對象(「請求對象」)來觸發重定向。