2012-06-27 45 views
0

我在codeigniter的URI路由功能中遇到了一個奇怪的問題......特別圍繞使用通配符。URI中的多重通配符路由不起作用

我想有發送到我的「位置」控制器下面的網址,叫我「編輯」方法:

http://foo.bar/stores/4fdbc15b8e08233c6d9f7d91/locations/4fdbc2ed8e08233c6d9f7d93/edit 

我在我的路線以下設置配置文件:

$route['stores/(:any)/locations/(:any)/edit'] = 'locations/edit'; 

但是,當我嘗試路徑到上述URL,該網站死亡。

我試圖使用正則表達式,但不幸的是,正則表達式不是我的強項,因此它也無法正常工作。

我曾看過其他的stackoverflow示例和其他網站,但沒有真正說明我有奇怪的URL結構。任何建議/決議將不勝感激。在此先感謝您的幫助!

+0

我建議你檢查你的日誌以獲取更多信息。我只是在我的服務器上測試它,它的工作非常好。 – Stanislav

+0

對不起所有...看來這個問題是其他地方我沒有預見到的。 CI中的URI路由器似乎正在工作。如果我還在牆上...我會更新我的帖子。 – digitalsweetspot

+0

我沒有看到這條路線有什麼問題。在CI的源代碼中,「(:any)」被替換爲正則表達式字符串來表示任何東西,所以不需要有正則表達式。你的意思是'該網站死亡'? –

回答

0

假設在你的請求URI的字符串是變長的,你可以嘗試這樣的事:

$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit'; 

但是你沒有澄清是由正則表達式匹配的字符串來完成。如果簡單地將追加到結尾,你的路線是這樣的:

$route['stores/([a-z0-9]*)/locations/([a-z0-9]*)/edit'] = 'locations/edit/$1/$2'; 

在這種情況下,在你的控制器的方法,你可以使用$this->uri_segment()功能解析出字符串。

$firstHash = $this->uri_segment(3); 
$secondHash = $this->uri_segment(4); 
0

下面是一個簡單的技術做你想做的事

$route['stores/(:any)'] = 'locations/edit'; 

然後使用uri_segment(N)在編輯器功能獲得的價值是什麼。

簡單嗎?