2014-10-18 61 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';