2013-05-23 16 views
7

私はこのようなナビゲーションバーを持っています。ワイルドカードを使用してすべてのビューに一致するView :: composerをバインドしますか?

<li>Account</li> 
    <ul> 
     <li>Register</li> 
     <li>Login/li> 
     ... 

Auth::check()に応じて動的に更新します。たとえば、ユーザーがログインしている場合、「アカウント」は「マイプロファイルページ」で変更され、子の兄弟は適切な配列に置き換えられます。

コントローラでView::make callsを編集せずにこれを行う必要があります。それはかなり悪く見えます。

このような解決策は私が探しているものです。

View::composer('home.*', function($view) { 
    if(Auth::check()) 
     return $view->nest('accountArea', 'home.navigation-loggedIn', null); 
    else 
     return $view->nest('accountArea', 'home.navigation-visitor', null); 
}); 

もっと良い選択肢がある場合は、私もそれを聞いてください!

+0

何を傷つけることはない同意しますか? –

+0

これはちょっと詳しく説明できますか? – Aristona

+0

まあ、私はあなたがレイアウトを使用していると仮定している、あなたはレイアウト(実際のコンテンツのビューではない)に入れたいと思っています。ですから、 'View :: composer( 'layouts.default'、...)'のようなことをします。 –

答えて

8

Laravelのワイルドカードのように見えます。彼らは今のところ非公開です。

View::composer('admin.layouts.*', function($view) 
{ 
    if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation')); 
    else     $view->with('navigation', null); 
}); 

これは私が探していたものです。

アップデート:ここでは、代替ソリューション

あなたはまた、レイアウトにバインドすることができますので、レイアウトは作曲の恩恵を受けることを拡張するすべてのサブビューです。

View::composer('admin.layouts.main_layout', function($view) 
{ 
    if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation')); 
    else     $view->with('navigation', null); 
}); 

それは@extend('admin.layouts.main_layout')を行い、すべてのビューに作曲をバインドします。

+0

うわー、ワイルドカードを! –

+0

私の場合、ビューコンポーザーのものが機能しませんでした。私はレイアウトに変数を送った。レイアウトでのみ利用でき、ビューを拡張したビューでは使用できませんでした。私は 'View :: share(key、value)'を使っていました –

3

View::share('variable', 'value')を使用すると、すべてのビューで変数を共有できます。

+0

routes.phpに入ると思いますか? – Aristona

+0

依存して、私は 'composers.php'ファイルを作成してView作曲家を置いて、通常はそこに置くことができます。 –

0

Aristonaさんのように(アドバイスありがとうございます):ワイルドカードが許可されています。コードを見てみると、Composerがイベントリスナーであることがわかり、ドキュメントのそのセクションで指摘されているのはWildcard event listenersです。

最後に、Str::is()を追加すると、Events\Dispatcherはワイルドカーリスナーを検出します。例えば、このような何か:要するに

str_is('namespace::*.view', 'namespace::folder.view') 

、私はそれがあなたの代わりに、レイアウトにView Composerの結合についての小さな有益なフレーズ:)

関連する問題