CakePHPでは、を使用して呼び出された関数文字列を取得することができます
$this->action
構文。呼び出されたもののリテラル文字列を返すため、URLが/do_this
の場合は、do_this
を返し、doThis
の場合は、doThis
を返します。呼び出されたメソッドの本名に関係なく。
一方、私が探しているのは、URL構文に関係なく、呼び出されたメソッドの実際の名前です。
それを見つける方法はありますか?
beforeFilter
メソッドでこれを実行できることが望ましいです。
リクエストオブジェクトを使用する必要があります。
CakePHP3.3以下
_$this->request->params['action'];
_
3.4以降
_$this->request->getParam('action');
_
これには、呼び出された実際のメソッド名が含まれている必要があると思います。 CakePHPsルーターは、文字列URLをコントローラー/アクションペアおよびその他の引数に解決します。これらはすべてリクエストオブジェクトになります。ドキュメントを読み、beforeFilter()でdebug($this->request);
を実行して、他に何があるかを確認します。
CakePHP2では$ this-> actionを使用でき、CakePHP3では$ this-> request-> params ['action']を使用する必要があります
params
配列(CakePHP> = 3.4)は非推奨ですコントローラー内で現在のアクションを取得する正しい方法は次のとおりです。
$currentAction = $this->request->getParam('action');
これを見たことがありますか? phpで現在の関数の名前を取得する これは明らかにbeforeFilterでは機能しません。コントローラでprivate $ action_nameという変数を設定し、メソッド内から設定して、後でafterFilterで使用できます。