製品コントローラーとヘッダーコントローラーがあります。製品コントローラーをロードするときは、Route :: forward()を使用してヘッダーコントローラーをロードします。
return View::make('frontend.catalogue.product.view')
->with('head', Route::forward("GET", "frontend/page/head"));
次に、次のようにしてページのヘッダーをエコーアウトできます。
<?php echo $head; ?>
単純。ただし、ページタイトルやメタディスクリプションなど、製品コントローラーで定義されるヘッダーコントローラーに情報を渡したいと思います。
理想的には、配列をヘッダーに渡すか、両方のルート要求がアクセスできるインスタンス化されたクラスをどこかに置くことができます。
ベースコントローラーコンストラクターでライブラリをインスタンス化しようとしましたが、これは各Route :: forward()リクエストで再インスタンス化されるため、設定したプロパティは次の転送で読み取ることができません。
これを行うために私が考えることができる唯一の方法は、セッションデータを使用することですが、それがそれを行うための最良の方法ではないようです。
ヘッダーは、独自のモデルなどを処理するため、ビューコンポーザーだけでなくコントローラーである必要があります。
Laravelが理想的なソリューションであるHMVCを実行していないことは知っています。また、HMVCのバンドルがあることも知っていますが、Laravelの方法でこれにどのようにアプローチするのか興味があります。
(Laravel 3.2 btwを使用)