2016-02-16 4 views
1

В моем проекте я использую Laravel 5.2, и теперь я застрял в этой маленькой проблеме, я не могу понять, как исправить.PHP laravel middleware in boot()

Мне нужно разделить переменную, только с подписанными пользователями, во всех представлениях. Я знаю, что мне нужно использовать view() -> composer(), но как?

Куда пойдет код? Я не могу использовать его в AppServiceProvider, так как метод boot() запускается до начала сеанса. Я видел, как кто-то рекомендовал использовать промежуточное ПО, чтобы делать то, что я пытаюсь сделать, но я тоже не могу это понять. Где бы я написал это новое промежуточное ПО? Где бы я тогда использовал view() -> composer()?

Немного подробней: Я пытаюсь проверить запросы друзей и помещать их в боковую панель пользователей на каждое представление, если есть какие-либо запросы.

И мой взгляд композитор выглядит в методе boot(), но не работает из-за Auth::check()

if (Auth::check()) { 

     view() -> composer('*', function($view) { 

      // Check for friend requests 
      $friend_requests = DB::table('friends') 
       -> where('user_id_receiver', '=', Auth::user() -> id) 
       -> where (function($query) { 
        $query -> where('status', '=', 2); 
       }) 
       -> get(); 

      $view -> with('friend_requests', $friend_requests); 

     }); 

    } 

Моя раскладка лезвие также довольно просто, используя расширяется и включает в боковой панели и другие вещи.

Если мне нужно что-то прояснить, пожалуйста, сообщите. Спасибо заранее.

ответ

0

Хорошо, я действительно понял это. Я создал нового провайдера, которого я назвал ViewComposerServiceProvider (сделал это из командной строки).

boot() метод в провайдере теперь выглядит следующим образом:

public function boot() 
{ 

    view() -> composer('*', 'App\Http\ViewComposers\UserMenuComposer'); 

} 

Затем я создал новую папку в App/Http, что я назвал ViewComposers, это где я теперь связывать переменные, которые мне нужны для некоторых Виды. В этой папке сейчас у меня есть 1 файл, потому что это все, что мне нужно сейчас.

Файл называется UserMenuComposer и содержание заключается в следующем:

<?php 

    namespace App\Http\ViewComposers; 

    use Illuminate\Contracts\View\View; 
    use Illuminate\Support\Facades\Auth; 
    use Illuminate\Support\Facades\DB; 

    class UserMenuComposer { 

    /** 
    * Bind data to the view. 
    * 
    * @param View $view 
    * @return void 
    */ 
    public function compose(View $view) 
    { 
     $view -> with('friendRequests', $this -> getFriendRequests()); 
    } 

    /** 
    * Get all friend requests 
    * 
    * @return mixed 
    */ 
    private function getFriendRequests() 
    { 

     if (Auth::check()) { 

      return DB::table('friends') 
      -> where('user_id_receiver', '=', Auth::user() -> id) 
      -> where (function($query) { 
       $query -> where('status', '=', 2); 
      }) 
      -> get(); 

     } else { 

      return false; 

     } 


    } 

} 

Тогда, наконец, теперь я могу получить доступ к Auth() в ней, как вы можете видеть.