1

PHP で書かれたプロトタイプの Web サイトがあります。最近、レイアウトやデータベース操作からロジックを分離するためにコードを書き直しました。だから今、私はMVCコードの設計のようなものを持っています.

今私を悩ませているのは、MVC には多くのファイルがあり、それぞれが他のファイル (モデル + ビュー + コントローラー) と組み合わされたときに何かを表示することです。そのため、MVC パーツのウィジェットのようなものを作成すると便利であることがわかりました。

たとえば、製品ビューの MVC がある場合、この新しい PHP ファイルに渡す GET 値に基づいて製品を表示するような方法で MVC パーツ ファイルを結合する PHP ファイルを作成します。

このようにして私が達成したいことは、ウェブサイトのウィジェット、サブパーツを個別に表示し、他のパーツとは別に使用できるようにすることです。つまり、ウィジェットのようなものか、Firefox ブラウザーのデザインのようなものになります。

したがって、ウェブサイトのすべての部分を個別にテストし、これらの部分を現在の実際のウェブサイト ページ デザインに組み合わせるだけで済みます。そのため、ユーザー テストも簡単になり、プレゼンテーション ファイルは非常に短く、理解しやすくなります。

それについてどう思うか知りたいです。私はデザインの穴に落ちたくないので、ウェブサイトのコードを簡単に維持するために、これが将来的に重要になると思います.

私は正しいですか?

4

2 に答える 2

1

あなたの問題に対する答えは、ビュー構成です。

画面全体を小さな部分に分割することをお勧めします: トップ バー、第 2 レベルのナビゲーション バー、製品リスト、プレビュー エリアなどです。これらは、別のビュー、ビュー ヘルパー、またはコントローラーの追加メソッドによって提供できます。次に、単純な HTML レイアウトを使用して、コントローラー アクションが単一の画面にピースを構成します。

例えば。静的なトップバーの場合、これは特殊なビューになる可能性があります。getProductsList($categoryId)動的な製品リストの場合、複雑なビューを提供するコントローラー メソッドである可能性があります。商品プレビューはビューヘルパーで配信できます。次の例を参照してください。

// inside class ProductsController
public function index($categoryId, $productId = null) {

    // specialised view
    $topBar = new TopBarView();
    $topBar->selected = 'products';

    // helper method
    $list = $this->getProductsList($categoryId);

    // helper object
    $previewHelper = new PreviewHelper($productId);
    $preview = $previewHelper->getView();

    // view composition
    $view = new View('path/to/template.tpl');
    $view->add($topBar);
    $view->add($list);
    $view->add($preview);
    return $view;

}

これは、構成がどのように機能するかを説明するための単なる例です。

ウィジェット (製品リストなど) を配信するメソッドを持つことの隠れた利点は、Ajax をサポートするために再利用できることです。getProductsListカテゴリを変更するには、新しいカテゴリ ID を持つメソッドへの Ajax 呼び出しが必要です。

于 2009-01-13T11:36:05.827 に答える
1

MVC には多くのファイルがあり、それぞれが他の (モデル + ビュー + コントローラー) と組み合わせると何かが表示されます。

これは、MVC モデルを正しく理解していないようです。ビューのみがコンテンツまたは「何かを表示」します。

これに基づいて、コンテンツの小さなウィジェットのような部分のみを作成するアクションを作成し、レイアウトで組み合わせることができます。

Zend_Layout クイック スタート を読むことをお勧めします。

于 2009-01-13T11:24:04.340 に答える