0

私のコントローラーは、いくつかの行と列のPDO配列を返します。ビューファイルのデータをループする最良の方法は何ですか?(または、モデルでより多くのロジックを実行する必要がありますか?)

$user->getDetails();  //returns array in view


foreach($user->getDetails() as $row)  // Prehaps? But how to index without being explicit with column names?

ありがとう!

4

4 に答える 4

2

ビューのポイントは、ビュー関連のロジックを実行して結果を出力することです (つまり、データを取得し、必要に応じてフォーマットします... JSON ビューの場合は、JSON を出力します。HTML 出力 HTML など)。それは正しい。適切と思われる方法でループしますが、データ構造に関する詳細がなければ、既に理解した以上のことは言えません。

于 2012-07-31T14:55:59.940 に答える
1

モデル層には、すべてのビジネスロジックが含まれている必要があります。そして、それはコントローラーに何も返さないはずです。代わりに、コントローラーはモデルレイヤー構造にメッセージを送信する必要があります。

モデルレイヤーからのデータは、ビューインスタンスによって抽出する必要があります。また、データの性質に応じて、適用するテンプレートを決定します。

MVCのビューには、すべてのプレゼンテーションロジックが含まれている必要があり、(Web関連のMVCに触発されたデザインパターンの場合)複数のテンプレートを処理します。また、ビューとコントローラーの間には1:1の関係があることに注意する必要があります。

そのビューがモデルレイヤーから受け取る情報の一部が何らかの配列である場合、2つの選択肢があります。単一のアイテムをレンダリングしてHTML/JSON / text / XMLフラグメントを繰り返し生成できるテンプレートを使用するか、配列を変数として受け取り、すでにループを含んでいるテンプレートを使用します。後者のアプローチは通常、より実用的なアプローチですが、それぞれが特定の短所として長所です。

于 2012-07-31T16:50:06.083 に答える
1

使用されている最良の方法またはアプローチはMVC、プログラミングロジックをコントローラーに保持することです、モデルでデータベース関連のものを実行し、ビューでレイアウトをフォーマットします。あなたの場合$user->getDetails();、コントローラで を呼び出し、結果をビューに渡し、それをループしてデータを出力する必要があります。

コントローラーでは、変数に値を入力できます$user->getDetails()

$user_details=$user->getDetails();

次に、ロード時にビューに渡し$user_details、ビューループでそれをループします

foreach( $user_details as $row ){
   echo $row->id;
   echo $row->name;
}

結果がarray of arrays代わりの場合はan array of objects、次のように使用できます

foreach( $user_details as $row ){
   echo $row['d'];
   echo $row['name'];
}

アップデート :

  1. モデルはデータの管理を担当します。アプリケーションが使用するエンティティを (通常はデータベースから) 格納および取得し、アプリケーションによって実装されたロジックを含みます。
  2. ビュー (プレゼンテーション) は、モデルによって提供されたデータを特定の形式で表示する役割を果たします。wordpress、joomla などの一部の一般的な Web アプリケーションに存在するテンプレート モジュールと同様の使用法があります。</li>
  3. コントローラーは、モデル レイヤーとビュー レイヤーを連携させて処理します。コントローラーはクライアントからリクエストを受け取り、モデルを呼び出してリクエストされた操作を実行し、データをビューに送信します。ビューは、Web アプリケーションで HTML 出力としてユーザーに表示されるデータをフォーマットします。

参照: PHP のモデル ビュー コントローラー (MVC)およびThis

于 2012-07-31T15:26:01.230 に答える
1
    foreach( $user->getDetails() as $row ){
       echo $row->name;
       echo $row->id;
    }

$user->getDetails() を一番上に置く必要はありません。foreach で関数が呼び出されます。

于 2012-07-31T14:58:23.553 に答える