私は、2 つの層に分割された階層的なユーザー構造を持つ FuelPHP アプリケーションを持っています。アプリケーションには、カスタム フィールドを使用できるチケット システムが含まれています。corporate
store
カスタム フィールドは、corporate
レベルおよび/またはレベルで定義できstore
ます。
レベルで定義されたカスタム フィールドはcorporate
、「デフォルト」のカスタム フィールドとして機能します。つまり、「デフォルト」のカスタム フィールドを上書きしていないstore
の範囲内のユーザーは、それらのカスタム フィールドにアクセスできます。corporation
レベルで定義されたカスタム フィールドは、次のstore
いずれかを実行できます。
- 「デフォルト」(
corporate
レベル) カスタム フィールドを上書きする - レベルで定義されていない追加
store
レベルのカスタム フィールドとして機能するcorporate
昨日、ストアの正しいフィールドを決定するロジックを書きました。store
定義されたすべてのカスタム フィールドをデータベースから取得し、いくつかの比較を実行して、スコープに適したカスタム フィールドの配列を吐き出します。
最初はコントローラーにロジックを書きましたFields
が、今日、アプリケーションの他の領域からそのデータにアクセスする必要があることに気付きました。多くの場合、Fields
使用可能なコントローラーのインスタンスがありません (明示的に作成せずに)。
私は通常、自分のデータ モデルに多くのロジックを入れることをためらっています。それは、いつそれが適切なのかがわからないことが主な理由です。ただし、この場合、ロジックを静的に書き直しField
て、メソッドとしてモデルに入れましたfor_store($id)
。それは機能しますが、ここでひどく間違ったことをしていないことを確認したいと思います.
これは、コントローラーではなくデータ モデルに配置するようなロジックですか? 私の考えは次のとおりです。データを操作せずにデータにアクセスするため、データ モデルに属します。一方、実際にデータを変更する場合、それはコントローラーに属します。それは理にかなっていますか?
観点からのベストプラクティスに興味があります。MVC