データベース アプリケーション用に独自の PHP MVC を開発しています。これは既に完了していますが、MySQL 処理、入力処理、および表示のすべてを行うモノリシック クラスを使用しています。それはうまく機能しますが、デバッグして変更を加えるのは悪夢です! 私は最近 MVC を発見し、アプリを書き直しているところです。現時点ではすべてが計画段階にあるため、実際に共有するコードはありません。
私がつまずいていることが 1 つあります: コントローラーはモデルを呼び出してユーザー入力に基づいてモデルを変更し、次にビューを呼び出す必要があることがわかりました。ビューは、データを取得するために必要なモデルにアクセスし、それを表示します。ビューがコントローラーとは独立してデータを取得し、コントローラーが仲介者として機能しないようにしたいと思います。モデルからデータを取得してビューに渡すコントローラーの行から始めましたが、ビューが複数のモデルにアクセスする必要があるという問題にすぐに遭遇しました。
私が行き詰まっていることを説明するために、例を示します。
例: モデルの検証に失敗するデータを含むフォームを送信する
フロントコントローラー:
- 関連するコントローラーをロードし、ProcessForm アクションを呼び出します
コントローラ:
- Model クラスをインスタンス化し、メソッドを呼び出してデータを読み込んで検証する
モデル:
- 検証に失敗しました: エラーのリストを生成し、'false' を返します
コントローラ:
- モデルが「true」を返した場合は、インデックス ページにリダイレクトします
- 「false」が返されました: ビューを呼び出します
意見:
- Model クラスをインスタンス化し、データをフェッチする
- データとエラー メッセージの表示
私の問題は、モデルの独自のインスタンスを持つビューが、モデルのコントローラーのインスタンスで生成されたエラーメッセージを、コントローラーが独自のモデルインスタンスをビューに直接渡すことなく、どのように取得できるかです。最初のインスタンスは、2 番目のインスタンスがメッセージを取得できる場所にメッセージを保存する必要があると思いますか?
最初のインスタンスがエラーをコントローラーに返し、それをモデル自体とは関係なくビューに渡すことができることを認識していますが、それでもビューをコントローラーから独立させたいと考えています。