1

在 Kohana 3.2 中,我使用默认路由进行简单的控制器/动作/id 设置:

Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'home',
    'action'     => 'index',
    'id'         => '0',
));

根据文档,将控制器和操作连接到这样的简单路由非常容易,但是控制器中永远无法访问路由参数(在本例中为 id)。

例如,我有一条路线:

/用户/信息/123

处理该路由的控制器被成功调用:

    public function action_info()
{
    $id = $this->request->param('id');
    echo "id=" . $id; //nothing
    echo "is_null=" . is_null($this->request->param('id')); //1
}

但是 $this->request->param('id') 总是设置为 null。

这似乎是我能想到的最简单的例子,我在这里做错了什么?

4

2 回答 2

2

原来我正在与扩展 Kohana 合作的公司使用 request->param() 函数来做某事而没有意识到这已经是 Kohana 中的一个函数,这破坏了内置功能。使用内置的 Kohana 请求功能可以解决此问题。

所以这不是问题,因为毕竟这是获取请求参数的正确方法。:)

于 2013-05-08T22:23:54.730 回答
1

你试过这个吗?

Route::set('default', '(<controller>(/<action>(/<id>)))')
  ->defaults(array(
    'controller' => 'home',
    'action'     => 'index',
    'id'         => '\d+',
));
于 2013-05-08T21:34:52.753 回答