可能重复:
CodeIgniter Routing
应该发生什么:用户导航到URI,routes.php抓取State并将其发送到控制器,控制器从数据库查询返回一些信息。非常基本的东西。
问题:URI没有将变量传递给控制器。我被告知了
缺少状态的参数1 :: state_summary
我可以为函数参数设置默认值,即。 ($ st ='Alabama')一切顺利。
我甚至不知道这是怎么回事。也许至少告诉我需要测试什么来追踪错误。
URI:
http://example.com/index.php/states/Alabama
routes.php文件:
$route['states/(.*)'] = "states/state_summary/$1";
州控制器:
...
function state_summary($st)
{
// DB query
// Return data
}
...
答案 0 :(得分:0)
我相信你的路线应该调整到这个:
$route['states/(:any)'] = "states/state_summary/$1";
这对我有用。 我不确定(。*)是否有效,因为我从未见过它。
答案 1 :(得分:0)
好吧,我从不编写控制器来获取参数,而是使用rsegment
方法:
...
function state_summary()
{
$st = trim($this->uri->rsegment(3));
// DB query
// Return data
}
...
有了这个,我对传递的参数有了更多的控制权。我可以使用trim或intval对其进行消毒,然后再将其传递给模型或库。
此外,codeigniter核心库中有一些关于路由url的调整。请参阅文件system/libraries/Router.php
中的function _parse_routes()
内的代码,第278行。这是URI路由在CI中的工作方式。