2014-10-09 15 views
6

Ich versuche ein view::share('current_user', Auth::User()); zu tun, aber in Laravel 5 kann ich nicht finden, wo dies zu tun ist, in L4 könnte man dies im baseController tun, aber das existiert nicht mehr .Laravel 5, View :: Share

GRT Glenn

Antwort

11

Erstens können Sie wahrscheinlich Ihre eigene Base erstellen und es in anderen Steuerungen erweitern.

Zweitens können Sie Auth:user() direkt in View verwenden, Sie müssen nichts in der Ansicht zuweisen.

Für andere Verwendungen können Sie auf app/Providers/App/ServiceProvider.php gehen und in boot Methode können Sie View::share('current_user', Auth::User()); aber oder natürlich müssen Sie zuerst den Import Namespace hinzuzufügen:

use View; 
use Auth; 

, da diese Datei in App\Providers Namespace ist

4

Dies wird dazu beitragen kann:

App::booted(function() 
{ 
    View::share('current_user', Auth::user()); 
}); 
+0

Und wo würden Sie solchen Code setzen? :) – Kiwi

+0

unter der Registerfunktion –

1

I‘ v probierte es, legte es in App/Provider einfach nicht funktioniert. Die alternative Möglichkeit besteht darin, eine globale Middleware zu erstellen und View :: share ('currentUser', Auth :: user()); Dort.

8

ich verwende Laravel 5.0.28, view::share('current_user', Auth::User()) nicht mehr funktioniert, weil dieses Problem https://github.com/laravel/framework/issues/6130

Was ich stattdessen tun ist, zunächst einen neuen Service-Provider Handwerker mit erstellen.

php artisan make:provider ComposerServiceProvider 

Dann fügen Sie ComposerServiceProvider zu config/app.php Anbieter Array

//... 
'providers' => [ 
    //... 
    'App\Providers\ComposerServiceProvider', 
] 
//... 

Dann öffnen app/Providers/ComposerServiceProvider.php, die gerade erstellt haben, im Inneren Boot-Methode fügen Sie den folgenden

/** 
* Bootstrap the application services. 
* 
* @return void 
*/ 
public function boot() 
{ 
    View::composer('*', function($view) 
    { 
     $view->with('current_user', Auth::user()); 
    }); 
} 

Schließlich Import View und Auth Fassade

siehe
use Auth, View; 

Weitere Informationen http://laravel.com/docs/5.0/views#view-composers

+1

Funktioniert! Super, danke. –

+2

Gemäß diesem Problem "In der Startfunktion wurde die Auth :: user() noch nicht initialisiert, so dass es für die Ansicht als null freigegeben wird." Das passiert mir tatsächlich; Auth :: user ist null. Wie funktioniert es für dich? – Vic

+0

@Vic Ja, ich bin mit dem Problem passiert, was ist Ihre Lösung? – iatboy

1

In Laravel 5 verwendet das gleiche Verfahren wie in Laravel 4:

View::share('current_user', Auth::User()); 

oder mit dem View Helfer:

view()->share('current_user', Auth::User()); 

Siehe in http://laravel.com/docs/5.0/views