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 のポイントは何ですか? (コメント付きのファイルのアップロードとは別に)いつ使用することをお勧めしますか?