プレゼンテーション ロジックは View インスタンスの範囲です (参考までに、ビューはダム テンプレートではありません)。
デスクトップではなくモバイル デバイスを介してサイトとやり取りすることにしたからといって、ドメインのビジネス ロジックは変わりません。モデルはそのまま。この変更はビューのみに影響し、ビューがどれだけ適切に記述されているかによって異なります。基本的に、次の 2 つのオプションがあります。
ビューは、デスクトップとモバイルで異なるテンプレートを使用します。モデル層から必要な情報を要求します。テンプレートをレンダリングします。これは、ほとんどの情報がモバイル クライアントとデスクトップ クライアントの両方で同じであるという事実に依存しています。
モバイル用とデスクトップ用に異なるビューがあり、各ビューで使用できるテンプレートは既にわかっています。この場合、テンプレートを使用してレンダリングする前に、モデル レイヤーからの非常に具体的な情報に対するビュー リクエスト。
2 番目の方法は、負荷の高いシステムには適していますが (ストレージとのやり取りをより正確にすることで少し節約できる可能性があります)、コードの重複が伴います。
もちろん、オプション nr.1 でこのような正確な要求を行うこともできますが、それにif ($desktop) .. else
はビュー全体にわたってブロックを繰り返す必要があり、コードを 2 つのクラスに分割し、ポリモーフィズムを採用する必要があることを明確に示しています。
コントローラーはどうですか?
どちらのオプションでも、コントローラーは同じままです。ビューの状態を変更する (最初のケース) か、作成するビューのタイプを決定する (2 番目のケース) ことによってのみ、ビューに影響を与えます。
一部のコントローラー アクションをモバイル ユーザーから非表示にする必要がある場合(別のテンプレートを使用することで既に部分的に実現されています)、ユーザーがコントローラーの特定のメソッドにアクセスできるかどうかを決定できる、ある種の ACL を実装できます。
もちろん、これはすべてMVC の理解にかかっています。