web-dev-qa-db-ja.com

コハナ3は現在のコントローラー/アクション/引数を取得します

コハナ2では、次のような情報を簡単に取得できます。

echo router::$controller;
echo router::$method;
echo router::$arguments[0-x];

それがコハナ3でどのように機能するかについて何か考えはありますか?

前もって感謝します!

18
n00b

コントローラの内部から:

_$this->request->controller_

_$this->request->action_

$this->request->param('paramname')

K2とは異なり、K3の引数には、ルートで定義したkayを介してアクセスします。

このURLを例にとってみましょう:

_Route::set('default', '(<controller>(/<action>(/<id>)))')    
    ->defaults(array('controller' => 'welcome', 'action' => 'index')); 
_

「id」引数にアクセスするには、

$this->request->param('id')

Param()メソッドからコントローラー/アクション引数にアクセスすることはできません。

Request::instance()を使用して、グローバル(または「マスター」)リクエストインスタンスを取得することもできます。

詳細については、 K3ガイド を参照してください。

32
Matt

ユーザーガイド からKohana 3.2の回答を更新しました:

// From within a controller:
$this->request->action();
$this->request->controller();
$this->request->directory();

// Can be used anywhere:
Request::current()->action();
Request::current()->controller();
Request::current()->directory();
25
Yarin

Kohana> = 3.1を使用している場合は、Requestオブジェクトの一部のプロパティがメソッドに変換されていることに注意してください。

例えば。 _Request::controller_はRequest::controller()(またはコントローラー内にいる場合は$this->request->controller())になりました。

詳細については、 http://kohanaframework.org/3.1/guide/kohana/upgrading のKohanaアップグレードガイドを参照してください。

3
Plankje