2017-01-11 10 views
1

テーブルから値を取って値を共有ビューに渡しています。目的のためにユーザーIDを知る必要がありますが、Auth::check()はfalseを返します。どうすればいいのですか?以下はコードですLaravel 5.3:Auth in Service Providerの使用方法

public function boot() 
    { 
     $basket_count = 0; 
     if (Auth::check()) { //always false 
      $loggedin_user_id = Auth::user()->id; 
      $basket_count = Cart::getBasketCount(); 
     } 
     view()->share('basket_count', $basket_count); 
    } 
+0

私はあなただと思いますLaravelの 'Event Listener'を使う必要があります。 https://laravel.com/docs/5.3/events –

+0

次のようなものを試してみてください。 'Use Illuminate \ Support \ Facades \ Auth;' 'public function boot($ guard = null)' '$ auth = Auth :: guard ($ guard); ' ' $ auth-> guest()trueまたはfalse' '$ auth-> user()' – Froxz

+0

@Froxz 'guest'は真です – Volatil3

答えて

2

OKはこのようなもののための場所ではありません。最高のものはMiddlewareです。したがって、Authを呼び出す場合は、ミドルウェアを作成し、ビューに値を渡します。

public function handle($request, Closure $next) 
    {    
     $basket_count = 0; 
     if ($this->auth) { //always false 
      $loggedin_user_id = $this->auth->user()->id; 
      $basket_count = Cart::getBasketCount($loggedin_user_id); 
     } 
     view()->share('basket_count', $basket_count); 

     return $next($request); 
    } 
0

コントローラファイルで直接認証を使用できます。ミドルウェアに追加することは、よりクリーンな認証方法です。

たとえば、あなたは完全な例を見てしたい場合はCategoriesController.php

で...

クラスCategoryControllerはコントローラー{

/** 
* CategoryController constructor. 
*/ 
public function __construct() 
{ 
    $this->middleware('auth'); 
} 

...

を拡張 http://deepdivetuts.com/basic-create-edit-update-delete-functionality-laravel-5-3

関連する問題