[CakePHP] 別のコントローラにあるアクションを利用する方法

CakePHPで開発をしていると、別のコントローラのアクションを実行したいと思うことがあります。
CakePHP2xでは2つの方法が用意されています。
App::importを使う場合
今回は「Posts」コントローラーで「Users」コントローラーの「index」アクションを使うことを想定します。
まず、コントローラーファイルの一番上で下記のように使いたいコントローラーを読み込みます。
1 |
App::import("Controller", "Users"); |
次に「Posts」コントローラーのtestアクションに以下のように記載します。
1 2 3 4 5 |
//PostsコントローラーのtestアクションでUsersコントローラのindexアクションを呼び出す function test() { $UsersController = new UsersController; $data = $HogesController->index(変数,配列); } |
indexの後の()の中はパラメタの指定になります。
下記のような設定が可能です。
index($id,$name,$url)→元のアクションで設定されている変数を入力
index(‘1′,’24’)→数字や文字列
index(array(1,2).array(3,4))→配列を指定
requestAction
requestActionは任意の場所からコントローラのアクションを呼び出して、アクションからのデータを返します。
実際の利用例としてはコントローラ名:PostsController、アクション名:test() の場合は $this->requestAction(‘posts/test’,’params’) になります。
パラメータの指定は配列でも可能になっています。
1 2 3 4 5 6 7 8 9 |
$this->requestAction( array( 'controller' => 'controllername', 'action' => 'actionname', ), array( 'pass' => array('params') ) ); |
こちらの方法は配列にパラメタを利用できないようなので、App::importを使ったほうがよさそうです。
関連記事
- [CakePHP] GETでパラメタ・コントローラ名・アクション名を取得
- [CakePHP] トップページ(ホームページ)を設定する方法
- [CakePHP] リダイレクトが効かない場合の対処方法
- [CakePHP] JSONを使う事前準備と、モデルのデータをJSONに変更する処理
- [Nuxt] パラメータの取得とバリデート