-1

私は MVC の V 領域の専門家ではなく、最近さまざまなビューを試しています。現在試しているビューは、名前が付いた適切なビューでさえない可能性があります。それは私が思いついたものです。

私のアプリケーションでは、 (配信要求) を にCustomer送信できます。には 4 つの状態があります。RequestCourierRequest

  1. 送信済
  2. キャンセル
  3. 却下
  4. 承認済み

RequestView拡張する がありますViewRequestエンティティをRequestViewオン コンストラクションに挿入し、その状態Requestに応じRequestViewて適切なテンプレートを選択します。

RequestViewには次のようないくつかの方法があります。

protected function getStateText() {

    switch( $this->request->getState() ) {
    case Request::STATE_SENT:
        return 'Sent';
    case Request::STATE_CANCELLED:
        return 'Cancelled';
    case Request::STATE_REJECTED:
        return 'Rejected';
    case Request::STATE_ACCEPTED:
        return 'Accepted';
    default:
        return 'Error';
    }
}

その後、呼び出してテンプレートで使用できます

echo $this->getStateText();

エンティティではRequest、INTEGER を使用して状態を操作するだけで、プレゼンテーション層にいるときは、現在の状態をテキストで表示したいので、現在の状態を数値形式で表示したい人はいませんgetStateText()。エンティティ自体ではなく、プレゼンテーション層。ここで私の考え/推論は正しいですか?

私の現在の実装は良いですか悪いですか?このタイプのビューには名前がありますか?

ありがとう。

4

2 に答える 2

1

まず第一に、なぜ$thisテンプレート内でビューを指すのでしょうか? 繰り返しになりますが、「テンプレート」という言葉を使用するときは、次のような意味です

Requestまた、ビュー内のインジェクション インスタンスの背後にある理由について、私はかなり混乱しています。ビューがモデルレイヤーからのデータを必要とする場合、そのデータを照会するだけです。次に、そのビュー内にいくつかの共有視覚化ロジックがある場合は、それを適切なプレゼンテーション オブジェクトに単純に分離できます。

これらのプレゼンテーション オブジェクト (Fowler はそれらを「プレゼンテーション モデル」と呼んでいますが、これは混乱を招くだけです) を使用して、テンプレートに適用する準備が整った値を生成できます。

そして、これはMVVMとは何の関係もありません。ViewModel は、コントローラーを交換するときに、そのパターンで使用するものです。これは一般的にビューには影響しません。また、MVVM パターンは、他の何よりもMVPにはるかに近いです。MVP、監視コントローラー、ページ コントローラーを追加し、Rails を崇拝する誰かにすべてを揺さぶらせれば、それが得られるでしょう。

あなたが現在持っている名前については、残念ながら私は単にSRP違反」とラベルを付けて、それをつつき続けます。

my 2 cents

于 2013-07-15T22:24:16.477 に答える