2013-08-02 4 views
1

У меня недавно возникли проблемы. Существует модель, из которой я извлекаю некоторые данные и вещи. Существует ссылка на меню, которую я хочу видеть на каждой странице, которую я вводил, поэтому я поместил ее в представление base/master. Но проблема в том, что мне нужно ввести ->with blabla thing на каждую публичную функцию в каждом контроллере. Как я не мог этого сделать? Я имею в виду, все равно вокруг? Я не хочу делать это с помощью каждого метода/функции контроллера. Вот мой код:Laravel 4 base/master view

    @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()); 
}); 

Everytime вы называете ваш взгляд, подсчет пользователей будет привязан к ней автоматически.

Edit:

О том, где использовать его, это до вас, и это зависит от вашего приложения, но вы можете использовать стр/старт/global.php, если у вас нет лучшего места, чтобы положить его , Его просто нужно выполнить перед вашими взглядами.

+0

Что вы хотите сказать по счету пользователей? Я не думаю, что мы понимали друг друга. – dinomuharemagic

+0

Это просто пример. Вам нужно будет использовать свой собственный код. –

+0

Спасибо за ответ, где я должен это использовать? Кроме того, я включу это в мое основное представление, например: @include ('your.view.name')? Никогда не использовал View :: composer. Кроме того, мне не нужно, чтобы в публичной функции (только на нескольких местах), но мне это нужно в моем меню. Как я мог сделать это только на нескольких функциях, но мое меню расположено в моем главном представлении. И он запрашивает это при каждом входе на любую страницу. – dinomuharemagic

1

@ Ответ Антонио - хороший способ сделать это. Вы также можете использовать View :: share(); для выполнения этого с более коротким кодом.

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

Чтобы напомнить читателям, что View :: share сделает эти привязки доступными для всех * просмотров. – Makita

Смежные вопросы