4

私はコハナ 3 を使用しています。param('controller') の結果が NULL である理由を知っている人はいますか。

ルーティング:

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

URL: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

reqeuest.php の 622 行目を調べます。

// 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 に答える