CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
2023/12/28
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP3で、現在処理しているコントローラー名、アクション名を取得したい場合があるかと思います。
例えば、「CakePHP3のCakeDC/Users、Authでログインなしでもアクセスを許可する設定」で記事を書きましたが、ユーザ管理システムを構築する中で、特定のコントローラーの特定のアクションのページは、ユーザ認証をしていないユーザでもページを表示する、という設定をしたいときに、処理しているコントローラー名を取得する必要がでてきます。
そんな時の処理しているコントローラー名、アクション名を取得する方法を解説します。
※この記事は CakePHP3用の内容になります。CakePHP4用の記事は「CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法」に書いていますので、こちらも合わせて確認してください。
CakePHP3で現在のコントローラーを取得する方法
下記の記述方法で、現在のコントローラーの値を取得することができます。
|
1 2 3 4 5 |
$this->request->controller; $this->request->params['controller']; $this->request->param('controller'); $this->request->getParam('controller'); // 3.4.0 で追加 $this->name; |
CakePHP3で現在のアクションを取得する方法
下記の記述方法で、現在のアクションの値を取得することができます。
|
1 2 3 4 |
$this->request->action; $this->request->params['action']; $this->request->param('action'); $this->request->getParam('action'); // 3.4.0 で追加 |
CakePHP 3.4以降なら getParam()メソッドが便利かも
コントローラー名、アクション名を取得する方法は、なんでこんなにいっぱいあるの?というくらいいろいろありますが、どれを使うかは好みで選べばいいのではないか、と思います。
あえて言うなら、「$this->name;」は、コントローラー名の取得の対になるアクション名の取得方法がありませんので、ちょっと残念かな、と思う程度です。
また、下記の「getParam()」メソッドを利用する方法は、CakePHP 3.4.0で追加された方法ですので、3.4.0より前のバージョンを使う予定がないのであれば、この「getParam()」メソッドを利用する方法が無難なのではないか、と思います。
|
1 2 |
$this->request->getParam('controller'); $this->request->getParam('action'); |
また、「getParam()」メソッドは、コントローラー名やアクション名の取得だけではなく、下記の様にしてプラグイン名やプレフィックスの値を取得することもできますので、覚えておくと役に立ちそうな気がします。
|
1 2 3 4 5 6 7 8 |
// 使用しているプラグイン名を取得 $this->request->getParam("plugin"); // prefix名を取得 $this->request->getParam("prefix"); // パラメーター(引数)を取得 $this->request->getParam("pass"); |
3番目のパラメーターの取得に関しては、
http://example.com/controller/action/aaa/bbb/ccc
のような URLの場合、
Array ( [0] => aaa [1] => bbb [2] => ccc )
として取得できます。
参考サイトは CakePHP3の Cookbook
最後になりましたが、ここで解説をした内容は、下記のオフィシャルの Cookbookを参考にしています。
リクエストとレスポンスオブジェクト
https://book.cakephp.org/3.0/ja/controllers/request-response.html
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3のkeywordsとdescriptionを設定する方法の解説。CakePHP3にはmetaタグを編集するHTMLヘルパーが用意されているためそれを利用すればOK!ポイントはブロック化を有効にすること。
-
-
CakePHP 2.3で saveの便利な使い方・サンプルソース付き
CakePHPのレコードを保存、更新する際に使う Saveを詳細解説します。
-
-
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。
-
-
CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!
-
-
CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。
-
-
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3でOGPを設定する方法を解説。fetch、assignを使用しレイアウトファイルに編集した変数にテンプレートファイルから値を指定する。これを利用してOGPを編集する。
-
-
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。
-
-
CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた
CakePHPでレコードを新規登録をする際にnewEmptyEntity()を使って空のEntityを作成するが、これのempty、is_nullなどのでの判定結果がtrueかfalseか確認してみた。
-
-
CakePHP3、CakePHP4のdatetime型カラムの日時の扱い。秒まで表示する方法
CakePHP3の日時カラムで秒まで扱う場合はdate()、strtotime()関数ではうまくいかない。CakePHP3であらかじめ用意された「i18nFormat()」を使用する。
-
-
CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定
CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。