の違いを知りたい:
$this->forward("module", "action");
と
$this->redirect("module/action");
私の最初の推測では、一方は新しいリクエストを意味し、もう一方はそうではないということですが、よくわかりません。
場合によっては、アクションの実行は、新しいアクションの実行を要求することによって終了します。たとえば、POST
リクエストでフォーム送信を処理するアクションは、通常、データベースの更新後に別のアクションにリダイレクトします。もう 1 つの例は、アクション エイリアスです。index アクションは多くの場合、リストを表示する方法であり、実際にはリスト アクションに転送されます。
アクション クラスは、別のアクションを実行するための 2 つのメソッドを提供します。
アクションが呼び出しを別のアクションに転送する場合:
$this->forward('otherModule', 'index');
アクションの結果として Web リダイレクトが発生する場合:
$this->redirect('otherModule/index');
$this->redirect('http://www.google.com/');
リダイレクトか転送かの選択が難しい場合があります。最適なソリューションを選択するには、転送はアプリケーションの内部にあり、ユーザーには透過的であることに注意してください。ユーザーに関する限り、表示される URL は要求されたものと同じです。対照的に、リダイレクトはユーザーのブラウザーへのメッセージであり、ブラウザーからの新しい要求と、最終的な結果の URL の変更を伴います。
を使用して送信されたフォームからアクションが呼び出される場合は、method="post"
常にリダイレクトを行う必要があります。主な利点は、ユーザーが結果のページを更新した場合、フォームが再度送信されないことです。POST
さらに、戻るボタンはフォームを表示することで期待どおりに機能し、リクエストを再送信するかどうかをユーザーに尋ねるアラートは表示しません。