CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
2025/03/23
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4で、現在処理しているコントローラー名、アクション名を取得したい場合があるかと思います。
例えば、「CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()」で記事を書きましたが、ユーザ管理システムを構築する中で、特定のコントローラーの特定のアクションのページは、ユーザ認証をしていないユーザでもページを表示する、という設定をしたいときに、処理しているコントローラー名を取得する必要がでてきます。
そんな時の処理しているコントローラー名、アクション名を取得する方法を解説します。
ちなみに、CakePHP3用の記事は「CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法」に書いていますが、CakePHP4になり使えない記述方法もあるようですので、改めて、CakePHP4用の記事としてまとめました。
CakePHP4で現在のコントローラーを取得する方法
下記の記述方法で、現在のコントローラーの値を取得することができます。
1 2 3 4 5 6 7 |
$this->request->getParam('controller'); // 3.4.0 で追加 $this->name; // 以下は CakePHP4では使えなくなりました // $this->request->controller; // $this->request->params['controller']; // $this->request->param('controller'); |
CakePHP4で現在のアクションを取得する方法
下記の記述方法で、現在のアクションの値を取得することができます。
1 2 3 4 5 6 |
$this->request->getParam('action'); // 3.4.0 で追加 // 以下は CakePHP4では使えなくなりました // $this->request->action; // $this->request->params['action']; // $this->request->param('action'); |
CakePHP4 では getParam()メソッドを使う
コントローラー名、アクション名を取得する方法は、CakePHP3ではなんでこんなにいっぱいあるの?というくらいいろいろありましたが、CakePHP4では「getParam()メソッド」を使うように改められています。
コントローラー名は「$this->name;
」でも取得可能ですが、同じような記述でアクション名を取得する方法がないため、この記述方法を使う場面は少ないかと思います。
また、「getParam()」メソッドは、コントローラー名やアクション名の取得だけではなく、下記の様にしてプラグイン名やプレフィックスの値を取得することもできますので、覚えておくと役に立ちそうな気がします。
1 2 3 4 5 6 7 8 9 10 11 |
// 使用しているプラグイン名を取得 $this->request->getParam("plugin"); // prefix名を取得 $this->request->getParam("prefix"); // パラメーター(引数)を取得 $this->request->getParam("pass"); // GETのパラメーター(引数)を取得 $this->request->getParam("?"); |
3番目のパラメーターの取得に関しては、
http://example.com/controller/action/aaa/bbb/ccc
のような URLの場合、
Array ( [0] => aaa [1] => bbb [2] => ccc )
として取得できます。
4番目の GETパラメーターの取得に関しては、
http://example.com/controller/action/aaa/bbb/ccc?xxx=000&yyy=111&zzz=222
のような URLの場合、
Array ( [xxx] => 000 [yyy] => 111 [zzz] => 222 )
として取得できます。
getAttribute(‘params’) でコントローラー名やアクション名などをまとめて取得
前項で「getParam()」を使用するとコントローラー名やアクション名などを取得できると説明しましたが、それらをまとめて取得する方法も用意されています。
それが「getAttribute(‘params’)」です。
下記の記述形式で使用します。
1 |
$this->request->getAttribute('params'); |
取得結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// 下記の URLがあったとして http://example.com/controller/action/aaa/bbb/ccc?xxx=000&yyy=111&zzz=222 // 下記を実行すると print_r($this->request->getAttribute('params')); // 下記のように出力されます Array ( [controller] => controller [action] => action [pass] => Array ( [0] => aaa [1] => bbb [2] => ccc ) [plugin] => [_matchedRoute] => /{controller}/{action}/* [?] => Array ( [xxx] => 000 [yyy] => 111 [zzz] => 222 ) [_ext] => ) |
「getAttribute(‘params’)」は、コントローラー名やアクション名をまとめて取得できますので、あらかじめまとめて取得しておき、使用するときに「$getAttributeArray["controller"]
の形式でその都度取り出す、といった使い方をしたいときに便利でしょう。
「getParam("controller")
」「getParam("action")
」はテンプレートでも使用可能
この記事で紹介する「getParam()
」メソッドを使って、コントローラー名やアクション名を取得する方法ですが、コントローラ内でも使えますし、ビュー(テンプレート)内でも同じ記述方法で取得することができます。
参考サイトは CakePHP4の Cookbook
最後になりましたが、ここで解説をした内容の関連する記事として、下記も参考にしてください。
「getParam('action')
で取得するアクション名は別関数に移動しても不変」
また、下記のオフィシャルの Cookbookも参考になります。
リクエストとレスポンスオブジェクト
https://book.cakephp.org/4/ja/controllers/request-response.html
CakePHP4の関連記事
CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説CakePHP4、CakePHP5の「warning: DebugKit is disabling...」の対処方法
MySQL+CakePHPのdate型、datetime型項目は「2999-12-31」までしか扱えない
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP 2.3 bakeの超初心者向けフォロー講座
CakePHP 2.3 bakeの超初心者向けフォロー講座
-
-
CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法
CakePHP3で検索をするプラグイン「friendsofcake/search」の検索条件のカスタマイズ方法の解説。検索項目を増やしたり、以上、以下での検索や、チェックボックスによる検索の方法などを解説。
-
-
CakePHP4系でJSONレスポンスの処理ではwithStringBodyを使う。3との違い解説
responseの値を指定する方法は3系では「body」だが、4系では「withStringBody」になりる。加えてJSON形式なら「withType」で指定するなど4系では結構異なる処理がある。
-
-
CakePHP 2.3で saveの便利な使い方・サンプルソース付き
CakePHPのレコードを保存、更新する際に使う Saveを詳細解説します。
-
-
CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。
-
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
-
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。
-
-
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。
-
-
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。
-
-
CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。