2014-11-08 109 views
0

我第一次使用CodeIgniter 2.0來創建一個多語言網站,其中主頁包含幻燈片放映。我在筆記本電腦上開發它 - localhost/website /。CodeIgniter行爲,構造函數和路由

我正在使用routes.php文件來指定調用哪個語言函數來設置變量,具體取決於格式爲http://localhost/website/language/page_id/some-page-title的url。因此http://localhost/website/en/1/Home-Page給出PAGE_ID的英文第1

routes文件因此具有:

$route['default_controller'] = "content"; 
$route['en/(:num)/(:any)'] = "content/en/$1"; 
$route['de/(:num)/(:any)'] = "content/de/$1"; 
$route['es/(:num)/(:any)'] = "content/es/$1"; 
etc 

在內容控制器中的語言功能(帶連接功能)的一個例子是:

public function en ($page_id) { 
     $language="en"; 
     $lang_array['css']="base.css"; 
     $this->get_content($page_id, $lang_array); 
} 

get_content函數然後執行所有操作。

內容控制器的指數函數但是看起來是這樣的:

public function index() { 
      //setting defaults for when arrive straight at home page or with no language in url 
      $page_id=1; 
      $lang_array['language']="en"; 
      $lang_array['css']="base.css"; 
      $this->get_content($page_id, $language); 
     } 

我的問題是,當我去http;//localhost/website/一切正常,包括幻燈片。然而,當我去的網址http://localhost/website/en/1/Home-Page除了幻燈片中的圖片不會出現(即使它們都執行相同的代碼,並且當我查看頁面上的查看源時html輸出是相同的),所有東西都可以工作。

我能想到的唯一的事實是,如果我只是把http;//localhost/website/然後索引函數將被稱爲激活構造函數,但如果我把http://localhost/website/en/1/Home-Page然後索引,從而構造函數被繞過。但不知道爲什麼因此其他事情仍然工作,但圖片幻燈片不。這是你認爲的原因嗎?任何解決方案

感謝

湯姆·

+0

真的讓我感到困擾的是,從兩個URL(簡單的根url和帶有語言組件的url)輸出的代碼是完全相同的。鏈接到圖像等都完全相同,也使用base_url()來解決路徑問題。如此迷茫。兩個相同的html如何顯示不同的結果? – 2014-11-09 08:46:10

回答

0

我能想到的是某種JavaScript錯誤對未定義的變量,可能關係到$ lang_array [「語言」]未被設置。

在索引中,您設置的按鍵默認爲 '恩',

public function index() { 
     //setting defaults for when arrive straight at home page or with no language in url 
     $page_id=1; 
     $lang_array['language']="en"; 
     $lang_array['css']="base.css"; 
     $this->get_content($page_id, $language); 
    } 

但在EN方法,你沒有

public function en ($page_id) { 
    $language="en"; 
    $lang_array['css']="base.css"; 
    $this->get_content($page_id, $lang_array); 

}

由於它們看起來幾乎相同,你應該將相同的行爲抽象爲私有函數,或者修改路由以將語言作爲參數發送給一個功能。