2

私が開発中のアプリにユーザーがログインした後、ユーザーの役割に基づいて、異なるメニュー項目のセットを提示する必要があります。

メニュー項目を組み立てる「メニュー」というフィルターを作成しました。routes.phpすべての前にフィルターを実行するために、これを持っています:

Route::group(array('before' = 'auth|menu'), function()...

私のメニューフィルターの最後に、すべてのビューでメニュークラスにアクセスできるようにするためにこれを持っています:

View::share('menu', $menu);

実際にメニューを構築するためにLaravel Menu bundleを使用していますが、コントローラーからメニュー項目の「アクティブ」フラグを動的に設定する最良の方法をまだ見つけていません。

メニュー バンドルは、URL を調べてアクティブ フラグを設定します (パス名を と比較しているように見えるので、これは機能しませんURI::current()。後者のみがドメイン、ポート、およびすべてを含む完全な URL を返すため、一致することはありません)。コントローラー内から何らかの方法で$menuクラスにアクセスして、直接変更できるようにしたいのです。

どうすればいいですか?この状況は、レジストリ (栄光化されたグローバル変数) を使用するときですか?

4

1 に答える 1

2

基本的なアイデアを提供し、先に進む準備が整います。IoC コンテナーを使用してメニュー オブジェクトをシングルトンとしてインスタンス化し、コントローラーまたはビューからアクセスします。メニューを挿入する別の方法は、View Composer を使用することです。Laravel のドキュメントとソース コードを詳しく調べることができます。

于 2012-10-13T21:55:01.457 に答える