我想尽量减少我的URL,但我有一个问题。我在Routes.php中的路由是这样的:
$route["news/(:num)"] = "home/news/$news";
在Home
控制器中,我有news
函数,它接受参数$news
。http://localhost/bestcarsinfo/home/news/7
但是当我使用新的URL版本http://localhost/bestcarsinfo/news/7
我得到错误提示:
未定义变量:news
in
config/routes.php
正如错误提示所示,$news未定义。路由器使用$1(或其他数值)作为引用来替代解析路由的正则表达式,你不能给它传递任意变量。
应该是:
$route["news/(:num)"] = "home/news/$1";
Router.php核心类中的一个片段:
if (preg_match('#^'.$key.'$#', $uri))
{
// Do we have a back-reference?
if (strpos($val, '$') !== FALSE AND strpos($key, '(') !== FALSE)
{
$val = preg_replace('#^'.$key.'$#', $val, $uri);
}
return $this->_set_request(explode('/', $val));
}