2016-05-22 7 views
6

में वर्तमान उपयोगकर्ता को कैसे प्राप्त करें, इसलिए मुझे आमतौर पर Auth::user() का उपयोग कर वर्तमान उपयोगकर्ता मिल रहा है और जब मैं यह निर्धारित कर रहा हूं कि उपयोगकर्ता वास्तव में Auth::check में लॉग इन है या नहीं। हालांकि यह मेरे AppServiceProvider में काम नहीं कर रहा है। मैं इसे सभी विचारों में डेटा साझा करने के लिए उपयोग कर रहा हूं। मैं var_dump दोनों Auth::user() और Auth::check() लॉग इन करते समय और मुझे NULL और false मिलता है।लार्वेल - AppServiceProvider

मैं अपने AppServiceProvider के अंदर वर्तमान उपयोगकर्ता कैसे प्राप्त कर सकता हूं? यदि यह संभव नहीं है, तो प्रत्येक उपयोगकर्ता के लिए अद्वितीय डेटा प्राप्त करने का तरीका क्या है (डेटा जो user_id के अनुसार अलग है) सभी विचारों में। स्पष्टीकरण के लिए मेरा कोड यहां है।

if (Auth::check()) { 
     $cart = Cart::where('user_id', Auth::user()->id); 
     if ($cart) { 
      view()->share('cart', $cart); 

     } 
    } else { 
     view()->share('cartItems', Session::get('items')); 
    } 
+0

इसके लिए आपको एक कस्टम मिडलवेयर बनाने की आवश्यकता है, चर्चाएं देखें: https://laracasts.com/discuss/channels/laravel/using-auth-in-service-provider-to-get-user-object, https : //github.com/laravel/framework/issues/7906 – Burak

उत्तर

8

Laravel सत्र, एक मिडलवेयर में प्रारंभ ताकि आप एक सेवा प्रदाता से सत्र तक नहीं पहुँच सकता है, क्योंकि वे अनुरोध जीवन चक्र में मिडलवेयर से पहले निष्पादित

आप साझा करने के लिए एक मध्यस्थ का उपयोग करना चाहिए सत्र से आपकी varibles

किसी अन्य कारण से आप एक सेवा प्रदाता में यह करने के लिए चाहते हैं के लिए, आप एक view composer एक कॉलबैक के साथ इस तरह इस्तेमाल कर सकते हैं, तो:

public function boot() 
{ 
    //compose all the views.... 
    view()->composer('*', function ($view) 
    { 
     $cart = Cart::where('user_id', Auth::user()->id); 

     //...with this variable 
     $view->with('cart', $cart);  
    }); 
} 

केवल जब दृश्य वास्तव में बना जा रही है कॉलबैक, निष्पादित किया जाएगा तो middlewares पहले से ही निष्पादित किया जाएगा और सत्र उपलब्ध

0

AuthServiceProvider के अलावा boot() समारोह कोड की इन पंक्तियों के बारे में हो जाएगा

public function boot() 
{ 
    view()->composer('*', function($view) 
    { 
     if (Auth::check()) { 
      $view->with('currentUser', Auth::user()); 
     }else { 
      $view->with('currentUser', null); 
     } 
    }); 
} 

यहां * का अर्थ है - आपके सभी विचारों में $currentUser चर उपलब्ध है।

फिर, दृश्य फ़ाइल {{ currentUser }} से उपयोगकर्ता को जानकारी दी जाएगी यदि उपयोगकर्ता अन्यथा प्रमाणीकृत है।