我在 Codeingniter 有这条路线
$route['([en|fr|es|it]+)/(.+)'] = 'My_Controller/index/$1/$2';
其中第一个参数是 lang id,第二个参数是唯一的 iD。ID 的格式有斜杠,例如:
item/34/public
something/else
name/for/this/can/be/12345
ID 中的斜杠数可以从 0 到(nobodyknows)所以实际上我通过这个 hack 在 My-Controller 中获取了 id:
public function index($lang,$id)
{
$hack_id = $this->uri->segment(3);
if ($this->uri->segment(4)) {
$hack_id .= "/".$this->uri->segment(4);
}
if ($this->uri->segment(5)) {
$hack_id .= "/".$this->uri->segment(5);
}
/*...and so go on if clauses, repeating and concatenating ...*/
/* and finally passing the hack_id data to view */
}
它有效,但我认为这是一个奇怪的解决方案(我并没有真正传递任何 id),并且必须是一种做得更好的方法,一个更聪明的解决方案(也许在路线中?)。
欢迎任何帮助或线索...