2013-08-02 77 views
1

我最近得到了一些問題。有一個模型可以從中抽取一些數據和事物。我想在每個輸入的頁面上都有一個菜單鏈接,所以我將它放到基本/主視圖中。但問題是,我需要在每個控制器的每個公共功能上輸入->with blabla thing。我怎麼能不這樣做?無論如何,我的意思是有嗎?我不想在每個控制器方法/功能上都做這些事情。這裏是我的代碼:Laravel 4基/母版視圖

    @if (Auth::guest()) 

       <li style="float: right;padding-right: 0"> 
        <ul class="nav"> 
        <li> 
         <a href="{{ URL::to('register') }}"> 
         <i class="icon-black icon-plus"> 
         </i> 

         <strong> 
          Register 
         </strong> 
         </a> 
        </li> 
        <li> 
         <a href="{{ URL::to('login') }}"> 
         <i class="icon-black icon-lock"> 
         </i> 

         <strong> 
          Log in 
         </strong> 
         </a> 
        </li> 
        </li> 
       </li> 
       </ul> 

       @else 

       <li class="divider-vertical"> 
       </li> 
       <li style="float: right;padding-right: 0"> 
       <div class="btn-group"> 
        <div class="btn btn-primary"> 
        <i class="icon-user"> 
        </i> 
        {{ (Auth::user()->name) }} 
        </div> 

        <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"> 
        <span class="icon-caret-down"> 
        </span> 
        </a> 

        <ul class="dropdown-menu"> 
        <li> 

         <a href="{{ URL::to('account/managment') }}"> 
         <i class="icon-user"> 
         </i> 
         Account Managment 
         </a> 

        </li> 
        <li> 

         <a href="{{ URL::to('account/managment/change_credentials') }}"> 
         <i class="icon-lock"> 
         </i> 
         Change Password 
         </a> 

        </li> 
        <li class="divider"> 
        </li> 
        <li> 

         <a href="{{ URL::to('account/logout') }}"> 
         <i class="icon-off"> 
         </i> 
         Log out 
         </a> 

        </li> 

        </ul> 
       </div> 

       @endif 

回答

1

您可以定義的View Composer:

View::composer(array('your.first.view','your.second.view'), function($view) 
{ 
    $view->with('count', User::count()); 
}); 

每次你打電話你的觀點,用戶數將自動綁定到它。

編輯:

在哪裏使用它,它給你,它依賴於你的應用程序,但你可以使用PP /開始/ global.php,如果你沒有一個更好的地方把它。它只是在你的觀點之前被執行。

+0

你是什麼意思的用戶數?我認爲我們不瞭解彼此。 – dinomuharemagic

+0

這只是一個例子。你需要使用你自己的代碼。 –

+0

感謝您的回答,我應該在哪裏使用它?另外,我將把它包含在我的主視圖中,如:@include('your.view.name')?從來沒有真正使用View :: composer。此外,我不需要在公共功能的東西(只在幾個地方),但我需要在我的菜單上。我怎樣才能做到這一點只有幾個功能,但我的菜單位於我的主視圖。每當我進入任何頁面時,它都會要求這樣做。 – dinomuharemagic

1

@安東尼的回答是這樣做的好方法。你也可以使用View :: share();用較短的代碼來完成此操作。

View::share(array(
    'foo' => 'bar'  
)); 
+0

只是爲了提醒讀者,View :: share將使這些綁定可用於* all *視圖。 – Makita