2013-05-08 138 views
1

在Kohana的3.2我使用的是默认路由一个简单的控制器/操作/ ID设置:Kohana的路由:不能访问路由参数

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 
} 

但是$这个 - >请求 - > param('id')总是被设置为null。

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

+0

为什么你的代码说它应该输入操作'index',但它正在运行'action_info'? – Tuan 2013-05-08 21:37:33

+0

这部分并不重要,它只是说默认操作(如果没有指定)将是索引,但是当我点击/ info/url Kohana路由到该操作。 – user1391445 2013-05-08 22:22:01

回答

1

你试过吗?

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

我试过了,但结果相同。据我了解,Route :: set的第二个参数可以用来设置路由的正则表达式,但我目前没有这样做,我不认为这适用于defaults数组。 – user1391445 2013-05-08 22:10:24

2

原来我的工作具有扩展的Kohana与请求 - >参数()函数做一些事情,公司没有意识到已经在Kohana的一个功能,这打破了内置的功能。使用内置的Kohana请求功能修复了这个问题。

因此,这是一个非问题,因为这是最终获得请求参数的正确方法。 :)