2023.10.07
【Phalcon】リダイレクトで$_POSTを渡す

UnsplashNEOMが撮影した写真

はじめに

postの処理をすると、ほぼ必ず別のページへの「リダイレクト」が関わってきます。

通常のリダイレクト(別ページにGetで移動するリダイレクト)と受け取った$_POSTをそのまま次のページに引き渡す「$_POSTを渡すリダイレクト」についてまとめます。

※以降では区別しやすくするため「通常のリダイレクト」、「$_POSTを渡すリダイレクト」と書きます。

参考

以下リンクはPhalcon公式ページです。

https://docs.phalcon.io/4.0/en/response#redirections

通常のリダイレクト

通常のリダイレクトは以下のように書きます。

$this->response->redirect('users/index');

赤字部分はviewsフォルダを起点とした相対パスです。

$_POSTを渡すリダイレクト

このリダイレクトについては、使いどころと使い方についてご説明します。

「$_POSTを渡すリダイレクト」が活躍する例

新規ユーザー登録する際、以下①~③の処理を別々のアクションで処理したい。

アクション①:新規登録するユーザー情報の入力
アクション②:入力したユーザー情報を確認
アクション③:DBに追加する

①⇒②はViewのフォームで値を受け渡ししたらいいのですが、問題は②⇒③です。

この②⇒③で$_POSTをそのまま渡せたら便利なんです!

「$_POSTを渡すリダイレクト」の使い方

$_POSTを渡すリダイレクトは以下のように使います。

$this->response->redirect('users/addconfirm', true, 307);

※第2引数:外部のURIへのリダイレクトをするかどうか
※第3引数:HTTPヘッダのステータスコード。307固定でOK!

おわりに

アクションの組み方次第で「$_POSTを渡すリダイレクト」は不要になる(むしろ使う方がマイナー?。。)のですが、きっと使いどころはあります。。!