2014-10-18 59 views
0

他們正試圖創建URL,其中第一部分是用戶,第二個是他的文件,例如:www.exemplo.com/joao/ball困難兩段URI

控制器

public function user() { 

    $user_url = $this->uri->segment(1); 

} 

^^這將與每一個返回文件中的配置文件:www.exemplo.com/joao

public function arquivo() { 

    $arquivo_url = $this->uri->segment(2); 

} 

^^這個特定的文件:www.exemplo.com/joao/bola

路線

$route['(:any)'] = 'home/user/$1'; 
$route['??'] = 'home/arquivo/$1'; 

回答

0

解決你的問題,你應該使用的路線是這樣..

$route['(:any)/(:any)'] = 'home/arquivo'; 
$route['(:any)'] = 'home/user'; 

但據您與您的項目這種類型的路由會給你一些困難時期。我建議你使用明確的路由名稱,因爲(:any)指任何事情都可以通過這個網址。

+0

感謝我的幫助,但我的問題的解決辦法是 $路線[ '([^ /] +)'] = '家/自拍/ $ 1'; $ route ['(:any)/(:any)'] ='home/viewalbum/$ 1'; – uellingtonpalma 2014-10-18 21:02:38

0

您可以使用routes將URI及其參數映射到相關函數。根據CI的版本,CodeIgniter路由的行爲會有所不同。

在CodeIgniter 2.2.0 (:any)equivalent to the regex, .+ - 匹配任何字符(不包括換行符)中的一個或多個;在3.0和當前的開發版本中,它是equivalent to [^/]+ - 一個或多個任何字符,不包括換行符。

在這種情況下,後者更有用,因爲您要確定兩個參數(用正斜槓分隔)。

在2.2.0:

$route['([^/]+)/([^/]+)'] = 'home/arquivo/$1/$2'; 
$route['(:any)'] = 'home/user/$1'; 

在3.0:

$route['(:any)/(:any)'] = 'home/arquivo/$1/$2'; 
$route['(:any)'] = 'home/user/$1'; 

控制器的功能將通常通過URI參數函數的參數是這樣的:

public function user($user) 
{ 
    // Show the user's profile 
} 

public function arquivo($user, $file) 
{ 
    // Show the file for the user 
} 
0

能夠用以下代碼解決。

$route['([^/]+)'] = 'home/user/$1'; 
$route['(:any)/(:any)'] = 'home/arquivo/$1';