CakePHP | 他のアクションへの転送

CakePHP

本記事では、CakePHP4の他のアクションへの転送方法を記載しています。

アクションを切り替えたい場合には、いくつかの方法があります。

中でも代表的なものは、redirectによる転送方法と言えると思います。

redirectはお手軽に利用でき、大変に便利です。

しかしながら、redirectの場合には、

URLが転送先のURLに書き換えられてしまう
パラメータをPOSTする場合には、作りこみが必要

など、制限もあります。

これを解決する方法として、setAction は大変役に立つでしょう。

setAction

同じコントローラー内で、異なるアクションにフォワードするには、下記の実装になります。

Cake\Controller\Controller::setAction($action, $args...)
もし、現在のアクションを 同じ コントローラーの異なるアクションにフォワードする必要があれば、 リクエストオブジェクトを更新し、描画されるビューテンプレートを変更し、そして 指定のアクションに実行をフォワードするために Controller::setAction() を使用します。

※CakePHP公式サイトのCookbookより抜粋

非常にシンプルに実現できます。

同一コントローラー内という制限がありますが、

redirectしたくない場合などで、多様出来る場面は多いと思います。

setAction()とredirect()の違い

setAction()とredirect()の違いを端的に説明すると、

setAction()はフォワードという移動は、プログラム内での処理によるものであるが、

redirect()は、指定したアドレス先に移動するものは、ブラウザが持つ機能を利用しているという違いになります。

おススメ商品

タイトルとURLをコピーしました