在Kohana 3.2中,我使用简单的控制器/动作/id设置的默认路由:
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
'id' => '0',
));
根据文档,将控制器和动作连接到这样一个简单的路由是很容易的,但是路由参数(在本例中是id)在控制器中永远无法访问。
例如,我有一个路由:
/user/信息/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。
这似乎是我能想到的最简单的例子,我在这里做错了什么?
结果是,我正在与之合作的公司扩展了Kohana,使用request->param()函数来做某些事情,而没有意识到它已经是Kohana中的一个函数,这破坏了内置的功能。使用内置的Kohana请求函数可以解决这个问题。
所以这不是问题,因为这是获取请求参数的正确方式。:)
你试过吗?
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
'id' => ''d+',
));