私はMVCが初めてです。あなたは警告されています...MVC:ビューはクエリ結果をループできますか?
私はMySQLの結果リソースをコントローラに返すことができるユーザーモデルを持っています。コントローラーはMySQLリソースを表示するビューに渡します。データベース結果取得関数を使用して、クエリ結果をビューに出力することは可能ですか?
<?php while($row = some_fetching_function($database_result_resource): ?>
<tr>
<td><?=$row['Username']?></td>
...etc
</tr>
<?php endwhile; ?>
これは私にとっては正しくありません。密接に結合されていますよね?モデルはある種のデータベースリソースを返さなければならず、ビューは何らかのタイプのデータベースフェッチメソッドを使用してビューをループしなければなりません。結果を2回ループせずにデカップリングすることはできますか?モデルの結果をループして結果の配列を作成し、次にビューを再度作成する必要があると思います。要約すると
:MVCデザインパターンに付着しながら
- ビューは、データベースの結果リソースを表示することができますか?
- データベースとの緊密な結合を回避しながら、データを2回ループさせないようにすることはできますか?
これは、OPの要件番号2を避けるものではありません。 Iteratorインターフェイスを実装するクラスラッパーを使用して、彼が求めたことを行うことができます。 – Martin
"コントローラでフェッチを行い、配列に入れてこれをビューに渡します。" 私は混乱しています、Daff - コントローラではなく、モデルでフェッチを行うべきではないですか? –
それはそれを表現する最良の方法ではありませんでした。私はそれが本当にアーキテクチャにも依存していると思う。私が意味していたことは、モデルデータのビューへの割り当ては、ビューではなくコントローラで行われることです(少なくとも私が扱ったリクエスト/レスポンスベースのPHPフレームワークのほとんどで)。 – Daff