在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-&gt; request-&gt; param('id')始终设置为null。
这似乎是我能提出的最简单的例子,我在这里可能做错了什么?
答案 0 :(得分:2)
原来我正在使用扩展Kohana的公司使用request-&gt; param()函数来做某事而没有意识到这已经是Kohana中的一个函数,这打破了内置功能。使用内置的Kohana请求函数可以解决这个问题。
因此,事实证明这是一个非问题,因为这是获取请求参数的正确方法。 :)
答案 1 :(得分:1)
你试过这个吗?
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
'id' => '\d+',
));