1つのコントローラーで検索のロジックを処理し、検索に基づいてデータを生成し、統計として返す場合があります。
別のコントローラーからコントローラー関数を呼び出すことをお勧めしますか?または、2つのコントローラーが「通信」することはありませんか?
1つのコントローラーで検索のロジックを処理し、検索に基づいてデータを生成し、統計として返す場合があります。
別のコントローラーからコントローラー関数を呼び出すことをお勧めしますか?または、2つのコントローラーが「通信」することはありませんか?
回答:
これはかなり奇妙ですが、答えは使用する言語/フレームワークによって異なります。異なる言語/フレームワークにはMVCの異なるアプローチがあるためです。
一般的に、次の理由から、あるコントローラーを別のコントローラーから使用することはありません。
通常、コントローラーは、MVCフレームワークで使用することを目的とした型の結果を返します。この結果には、呼び出し元として不要な多くの情報(ビューの名前など)が含まれ、興味のある情報に簡単にアクセスできるとは限りません(この場合、モデル、私が正しいと思う場合)。
コントローラは、HTTP要求とコンテキストに関するある程度の情報を必要とすることが多いため、ビジネスコードから初期化するのは簡単ではありません。この情報はすべて、MVCフレームワークによって渡されることが期待されています。
さらに重要なことは、2つのコントローラーで大量の検索結果が必要な場合です。1つはエンドユーザーに結果を表示し、もう1つは統計を生成し、検索ロジックをビジネスレイヤー(最初に属する場所)に配置するだけで、ちなみに)、コントローラーをできるだけ小さくしてください。
MVCでのコントローラーの役割は、プロセスを調整することです。
コントローラーの役割は、ビジネスロジックを処理することではありません。
コードがビジネスレイヤーに移動すると、1つのコントローラーが別のコントローラーから使用されるのとは異なり、明確で簡単な方法で再利用できる検索インターフェイスを提供できます。