CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
2023/12/28
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"]
の形式でその都度取り出す、といった使い方をしたいときに便利でしょう。
参考サイトは CakePHP4の Cookbook
最後になりましたが、ここで解説をした内容は下記のオフィシャルの Cookbookを参考にしています。
リクエストとレスポンスオブジェクト
https://book.cakephp.org/4/ja/controllers/request-response.html
CakePHP4の関連記事
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でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。
-
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!
-
CakePHP4のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説
CakePHP4のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。
-
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
CakePHPの同一テーブルにある項目の値を比較し条件に合致するレコードを取得する方法を解説。[”項目名”=>”値”]ではなく[”項目名 = 項目名”]と書くところがポイント。
-
CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説
入力された値によってバリデーション(入力チェック)の内容を切り替える。その処理をCakePHPで実装する方法を解説。条件ごとに unset関数を使ってバリデーションを削除する、という方法を採る。
-
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3のkeywordsとdescriptionを設定する方法の解説。CakePHP3にはmetaタグを編集するHTMLヘルパーが用意されているためそれを利用すればOK!ポイントはブロック化を有効にすること。
-
CakePHP4でcontrollerで実行したバリデーションエラーをmodelのにマージする方法
CakePHP4でcontrollerで実行したバリデーションの結果をModelのバリデーション結果に追加するメソッド「setError()」「setErrors()」の使い方の解説。
-
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHPには「FrozenDate」の日付を扱う関数が用意されている。これを利用して、1ヶ月後、月末日、月初日、5日後などを指定して日付を取得できる。それを解説。
-
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。
-
CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除
CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。