私のページには、すべてのページに読み込まれるメニューがあります。メニューデータは、モデルを介してデータベースからフェッチされます。私が最初に考えたのは、コントローラーからモデルを呼び出してから、それをすべてのページのビューに渡すことでした。しかし、それは「厄介な」コードになります。メニューデータをビューに渡すのを忘れると、醜いエラーが発生します(またはメニュー項目がないだけです)。
そこで、ヘルパーを介してメニュー項目をフェッチし、ビューからヘルパー関数を呼び出すという解決策を思いつきました。コードは1か所(メニュービュー)にしか存在しないため、より理にかなっています。
私のビューは次のように設定されています。コントローラーは「ページ」ビューを呼び出し、ヘッダービュー、メニュービュー、適切なコンテンツビュー、最後にフッタービューを読み込みます。ヘルパーは、メニュービューという1つの場所からのみ呼び出されます。
通常、ヘルパーからモデルをロードすることもできませんが、$ i = get_instance();を使用して回避策を実行しました。次に、そのインスタンスを介してモデルをロードします。$ i-> load-> model()。
これは進むべき道ではないと感じていますが、もっと良い方法はありますか?
編集:より良い方法でそれを置くために:
欲しい:表示->データを取得->表示
ない:コントローラー->データの取得->表示に渡す->表示
MVCモデルを完全に無視しているため、それが「OK」であるかどうかはわかりません。