2013-10-25 132 views
0

我正在通過API在我的網站上嵌入國旗圖像&其他幾個。自定義路由不工作| Codeigniter路由

我在3個參數取即

  1. 國家(國家名稱 - ISO代碼或全名)
  2. 尺寸(圖像尺寸)
  3. 類型(樣式,如平面標誌,閃亮的圓國旗等)

現在,一切設置正確,但堅持處理URI。

Controller -> flags.php 
Function -> index() 

我現在擁有的是:

http://imageserver.com/flags?country=india&size=64&style=round 

我想要什麼

http://imageserver.com/flag/india/64/round 

我通過一些文章去了,做這條路線,但所有這些失敗

$route['flag/(:any)/(:num)/(:any)'] = "welcome/index/country/$1/size/$2/style/$3"; 
$route['flag/(:any)/(:num)/(:any)'] = "welcome/index/$1/$2/$3"; 
$route['flag/(:any)/(:num)/(:any)'] = "welcome/index?country=$1&size=$2&style=$3"; 

回答

0

我在編寫自定義cms時也遇到了路由問題。通過閱讀你的問題,我發現一些問題很可能是你正在尋找的答案。

首先,讓我們來看看你已經嘗試了路線:

$route['flag/(:any)/(:num)/(:any)'] = "welcome/index/country/$1/size/$2/style/$3"; 
$route['flag/(:any)/(:num)/(:any)'] = "welcome/index/$1/$2/$3"; 
$route['flag/(:any)/(:num)/(:any)'] = "welcome/index?country=$1&size=$2&style=$3"; 

如果你想從你的標誌類,它看起來像你這樣做,你不想航線運行指數法歡迎上課。但是,目前,你是。您的路線應該如下所示:

$route['flag/(:any)/(:num)/(:any)'] = "flags/index"; 

這樣Codeigniter會從您的標誌類運行索引方法。您不必擔心路線中的國家,大小或風格/類型。最好的辦法會有使用URI段的功能是這樣的:

$country = $this->uri->segment(2); //this would return India as per your uri example. 
$size = $this->uri->segment(3); //this would return 64 as per your uri example. 
$style = $this->uri->segment(4); //this would return round as per your uri example. 

您可以再使用這些變量來查詢數據庫,並得到正確的標誌或其他任何你需要與他們無關。

因此,要重申我多一點的解釋回答,爲什麼:

你當前正在運行的歡迎控制器/類和指數函數/該控制器/類的方法的途徑。顯然,這不是你想要的。所以你需要確保你的路線指向正確的控制器和功能,就像我上面做的那樣。 URI的額外部分不需要在您的路由聲明中,因此您只需使用uri_segment()函數來獲取每個段的值,並根據需要執行它們。

我希望這可以幫助你。我可能沒有爲我的問題找到答案,但至少我可以爲其他人提供答案。如果這看起來讓您感到困惑,請查看http://ellislab.com/codeigniter/user-guide的用戶指南。你需要爲這個主要環節是:

http://ellislab.com/codeigniter/user-guide/libraries/uri.html

http://ellislab.com/codeigniter/user-guide/general/routing.html

讓我知道如果你需要更多的幫助,或者如果這有助於解決您的問題。