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

CakePHPで開発をしていると、別のコントローラのアクションを実行したいと思うことがあります。
CakePHP2xでは2つの方法が用意されています。

App::importを使う場合

今回は「Posts」コントローラーで「Users」コントローラーの「index」アクションを使うことを想定します。
まず、コントローラーファイルの一番上で下記のように使いたいコントローラーを読み込みます。

次に「Posts」コントローラーのtestアクションに以下のように記載します。

indexの後の()の中はパラメタの指定になります。
下記のような設定が可能です。
index($id,$name,$url)→元のアクションで設定されている変数を入力
index(‘1′,’24’)→数字や文字列
index(array(1,2).array(3,4))→配列を指定

requestAction

書式
requestAction(string $url, array $options)

requestActionは任意の場所からコントローラのアクションを呼び出して、アクションからのデータを返します。

実際の利用例としてはコントローラ名:PostsController、アクション名:test() の場合は $this->requestAction(‘posts/test’,’params’) になります。

パラメータの指定は配列でも可能になっています。

こちらの方法は配列にパラメタを利用できないようなので、App::importを使ったほうがよさそうです。



Author: webmaster