0

自分で書いた MVC フレームワークに少し問題があります。フォームを別のページに投稿するときに、そこにアラートを表示したいと考えています。

例: mvc フレームワークでブログを作成しました。ここには、「blog/overview」、「blog/addPost」、「blog/deletePost」の 3 つのコントローラー/メソッドがあります。メソッド「blog/addPost」にいるとき、次のようなフォームでビューを呼び出します:

<form action="blog/overview/" method="post">
  <input type="text" name="title" />
  <input type="text" name="post" />
  <input type="submit" name="addPost" />
</form>

ご覧のとおり、メソッドの「ブログ/概要」に投稿しています。フォームが投稿され、ブログが正常に追加されたときに、「ブログの投稿が正常に追加されました」というアラートを表示できるようにしたいと考えています。「ブログ/概要」ビューで。

投稿があった場合、方法の「ブログ/概要」をチェックインする必要があるということですか?それはどこからのものですか? ブログ投稿を削除するときに同じことをしたいからです。つまり、「ブログ/概要」で既に 2 つのことを確認する必要があります。そして、これは正しい方法ではないように思えます。

誰かがこれがどのように行われるか教えてください。

4

2 に答える 2

1

私がいつもしていることは、どのボタンが押されたかを確認することです。

   if(isset($_POST['addPost'])){
    //do something
    header("Location: /blog/overview/");
   }

これが行うことは、addPost 送信ボタンが押された場合にのみ if ステートメントのコードを実行することです。そうすれば、フォームに 2 つのボタンがある場合、押されたボタンに基づいて異なるコードを実行できます。それがあなたの質問に役立つ/答えてくれることを願っています。

于 2012-11-21T22:00:55.343 に答える
1

フォームの (正しい) 送信は、Post/Redirect/Getパターンに従い、より大きな MVC デザイン パターンに適用する必要がある 2 つの主要な部分 (ステージ) に分割されます。

  • 第 1 段階:POST-REDIRECT

    フォームは で投稿する必要があります<form action="/blog/addPost" method="post">addPost()これにより、記事の管理を担当するモデル層のサービスに必要な情報を渡すコントローラーのメソッドが呼び出されます。

    上記のサービスは、あなたが使用する永続的なストレージの形式に関係なく、記事を保存しようとしました. この操作が失敗した場合、サービスはエラー状態を保存します (通常はセッション内)。操作が成功した場合、サービスは「最後の操作」をセッションのどこかに保存し、後で復元します。

    次に、モデル レイヤーに新しい変更があったことを確認/blog/overviewし、HTTP ロケーション ヘッダーのみを含む応答を生成してリダイレクトします。

  • 第2段:GET

    Controllersoverviewメソッドが呼び出されますが、これは礼儀としてのみです。

    ビューが応答を生成するコマンドを受け取ると、エラー状態が設定されているかどうかにかかわらず、最初にモデル レイヤー (ほとんどの場合、記事のライブラリを管理するための同じサービス) を要求します。

    サービスはセッションからエラー状態を回復しようとし、以前に保存されていた場合はエラー コードを表示するために送り返します。

    ビューは概要の HTML 応答を組み立てます。モデル レイヤーがエラー コードを返した場合、その HTML を作成するために使用されるテンプレートの 1 つに、エラー メッセージを表示するためのフラグメントが含まれます。

    エラーがない場合、ビューは最後の変更または最後の操作のモデル レイヤーを要求できます。ポストが成功すると、セッションにも保存できます。このようにして、ビューは以前の操作が行われたことを認識し、「正常に追加/削除された」メッセージのテンプレートも追加する必要があります。

これは単純化された段階的なプロセスです。MVC および MVC にインスパイアされたパターンは、複雑なアプリケーションで構造を提供するために作成されており、ブログは単純すぎる可能性があることを理解する必要があります。そのため、MVC デザイン パターンを選択することは、想像するほど実用的ではない可能性があります。

于 2012-11-21T22:35:34.813 に答える