4

我正在使用 Kohana 3。有谁知道为什么 param('controller') 结果为 NULL。

路由:

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

网址:http://localhost/application/page/index/1

参数调用:

$param = Request::instance()->param('controller');
echo Kohana::debug($param); //results: NULL
$param = Request::instance()->param('action');
echo Kohana::debug($param); //results: NULL
$param = Request::instance()->param('id');
echo Kohana::debug($param); //results: 1
4

2 回答 2

6

在第 622 行的 reqeuest.php 中查找:

// These are accessible as public vars and can be overloaded
unset($params['controller'], $params['action'], $params['directory']);

// Params cannot be changed once matched
$this->_params = $params;

这就是第 695 行无法返回的原因controller

public function param($key = NULL, $default = NULL)
{
    return $this->_params[$key];
}

这就是您获取控制器的方式$controller = Request::instance()->controller;,或者$controller = $this->request->controller;如果您在控制器内部

于 2010-07-19T09:09:50.760 回答
3

对于使用 Kohana 3.1 的每个人,访问当前控制器的名称并在控制器中执行如下操作:

$this->request->controller()

$this->request->action()

或者,如果您不在控制器中,您可以随时访问当前请求的方法,如下所示:Request::current()->controller()

查看system/classes/kohana/request.php更多您可以类似访问的方法。

于 2011-07-07T11:58:11.753 回答