ZF2 を使い始めたとき、最初に使用したモジュールは ZfcUser でした。コントローラーのコードをデバッグすると、(少なくとも私にとっては) アクションを管理する奇妙な方法が見つかりました。次のようなコードを見つけました
$prg = $this->prg('zfcuser/changepassword');
if ($prg instanceof Response) {
return $prg;
} elseif ($prg === false) {
return array(
'status' => $status,
'changePasswordForm' => $form,
);
}
//VALIDATE FORM AND DATABASE STUFF
(...)
動作は次のとおりです。
- 最初の load $prg は false であるため、フォームを返します。
- ページを送信すると、$prg は Response のインスタンスなので、$prg を返します。
- $prg が返されると、同じ関数が再度呼び出され、$prg は投稿されたすべてのデータを含む配列になるため、フォームとデータベースの検証にジャンプします。
私はそれが奇妙なアプローチだと思ったので、これを単純な request->isPost() に置き換えて必要なすべての関数をオーバーライドします。投稿された最初のロード/データを処理する方が簡単であることがわかりました。
私は今までそれをもっと重要視していませんでした。ファイルをアップロードしようとしているときに、Post-Redirect-Get アプローチに再び直面しています。フォームで検証エラーが発生したときに、ユーザーがファイルを再選択して再アップロードできないようにする必要があるようです。
Post-Redirect-Get のポイントは何ですか? (コメント付きのファイルのアップロードとは別に)いつ使用することをお勧めしますか?