1

CakePHP リクエストでモデルを介してコンパイルされたネストされた配列があります。配列はさまざまな深さでネストでき、コンテンツはユーザーに返されます。

現在、この配列のループとレンダリングのプロセスは、リクエストの View 要素の関数を使用して完了しています。この関数は、最初に基本配列の深さで呼び出され、さらに配列の子を持つ配列要素に対して繰り返されます。例えば。

function print_depth($elements) {
  foreach($elements as $element) {
    echo $element['title'];

    if($element['children']) {
      print_depth($element['children']);
    }
  }
}

print_depth($elements);

このプロセスにより、ビュー内のマークアップの柔軟性を維持しながら (したがって、スキン可能)、配列のすべてのレベルを出力できますが、これを処理する関数の場所が間違っていると思います。

この操作のためのより多くの MVC 有効なプロセスはありますか?

4

2 に答える 2

2

MVC の観点から見ると、視覚的な表現のためにデータを準備するのはビューの責任であるため、それが属する場所はおそらく正しいでしょう。ただし、より DRY なアプローチでは、この機能をヘルパーに実装できます。

于 2012-10-16T06:46:13.750 に答える
1

ビュー コードに単一の関数を配置する代わりに、ヘルパーを作成します。

あなたがしていることは、ツリーをレンダリングするように聞こえますが、そこには既にツリー ヘルパーがあります。

https://github.com/CakeDC/utils/blob/master/View/Helper/TreeHelper.php

于 2012-10-16T06:47:58.053 に答える