エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

      2025/03/23

CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

 
CakePHP4で、現在処理しているコントローラー名、アクション名を取得したい場合があるかと思います。
 
例えば、「CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()」で記事を書きましたが、ユーザ管理システムを構築する中で、特定のコントローラーの特定のアクションのページは、ユーザ認証をしていないユーザでもページを表示する、という設定をしたいときに、処理しているコントローラー名を取得する必要がでてきます。
 
そんな時の処理しているコントローラー名、アクション名を取得する方法を解説します。
 
ちなみに、CakePHP3用の記事は「CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法」に書いていますが、CakePHP4になり使えない記述方法もあるようですので、改めて、CakePHP4用の記事としてまとめました。
 
 

CakePHP4で現在のコントローラーを取得する方法

 
下記の記述方法で、現在のコントローラーの値を取得することができます。
 

$this->request->getParam('controller');    // 3.4.0 で追加
$this->name;

//  以下は CakePHP4では使えなくなりました
//  $this->request->controller;
//  $this->request->params['controller'];
//  $this->request->param('controller');

 
 

CakePHP4で現在のアクションを取得する方法

 
下記の記述方法で、現在のアクションの値を取得することができます。
 

$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()」メソッドは、コントローラー名やアクション名の取得だけではなく、下記の様にしてプラグイン名やプレフィックスの値を取得することもできますので、覚えておくと役に立ちそうな気がします。
 

// 使用しているプラグイン名を取得
$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’)」です。
 
下記の記述形式で使用します。

$this->request->getAttribute('params');

 
 
取得結果は以下のようになります。

// 下記の 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の関連記事

CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法
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」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP4で「app_local.php」「.env」を利用して環境ごとの定数を振り分ける方法
CakePHP4で「app_local.php」「.env」を利用して環境ごとの定数を振り分ける方法

CakePHP4で.env、app_local.phpに定数を定義してそれを呼び出す方法の解説。Gitでは管理せず本番環境と開発環境とで異なる定数を定義するためそれを利用する方法。

CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点

CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。

CakePHP3ログファイルの出力方法・$this->log()の解説
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説

コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。

VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する。
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する

VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。

CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQLの実行はConnectionManagerを使う

CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。

CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。

CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法
CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法

CakePHP3のツリービヘイビアを使ったツリーカテゴリーの子階層も含めての検索を検索プラグイン「friendsofcake/search」を使って実現する方法を解説しました。

CakePHP3のバージョンを指定してインストールする詳細な手順を解説
CakePHP3、CakePHP4、CakePHP5のバージョンを指定してインストールする詳細な手順を解説

CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。

CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法

CakePHP4のクリエビルダーを使って複数のOR条件をANDでつなぐSQL文を作成する方法を解説。OR条件を記述したwhere句を2つつなげて記述する。

CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法
CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法

コントローラーからビューに送ったテーブルのオブジェクトを連想配列に変換し、ビューの中で自由に使えるようにするメソッド「toArray()」の解説。連想配列に変換できれば利用度アップ!