-1

可能重复:
CodeIgniter 路由

应该发生什么:用户导航到 URI,routes.php 获取状态并将其发送到控制器,控制器从数据库查询中返回一些信息。很基本的东西。

问题:URI 没有将变量传递给控制器​​。有人告诉我

States::state_summary 缺少参数 1

我可以为函数参数设置默认值,即。($st='Alabama') 一切顺利。

我什至不明白这怎么可能。也许至少告诉我需要测试什么来追踪错误。

网址:

http://example.com/index.php/states/Alabama

路线.php:

$route['states/(.*)'] = "states/state_summary/$1";

状态控制器:

...

function state_summary($st)
{
// DB query
// Return data
}

...
4

2 回答 2

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 中的工作方式。

于 2010-01-13T02:53:05.460 回答
0

我相信您的路线应该调整为:

$route['states/(:any)'] = "states/state_summary/$1";

这对我有用。我不确定 (.*) 是否有效,因为我从未见过它使用过。

于 2009-12-26T06:04:31.880 回答