2014-10-09 3 views
6

Sto cercando di fare un view::share('current_user', Auth::User()); ma in laravel 5 non riesco a trovare dove farlo, in L4 si potrebbe fare questo nel BaseController, ma quello non esiste più .Laravel 5, Visualizza :: Condividi

tsl Glenn

risposta

11

In primo luogo, probabilmente si può creare il proprio BaseController ed estenderlo in altri controller.

La seconda cosa è che è possibile utilizzare Auth:user() direttamente in Visualizza, non è necessario assegnare nulla nella vista.

Per altri usi si può andare a app/Providers/App/ServiceProvider.php e in boot metodo che si può View::share('current_user', Auth::User()); ma o il corso è necessario aggiungere l'importazione di spazi dei nomi prima:

use View; 
use Auth; 

perché questo file è in App\Providers namespace

4

Questa volontà può aiutare:

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

E dove metti questo codice? :) – Kiwi

+0

sotto la funzione di registro –

1

I' v provato, metterlo in app/Provider semplicemente non funziona. Il modo alternativo è creare un middleware globale e inserire View :: share ('currentUser', Auth :: user()); Là.

8

Sto usando laravel 5.0.28, view::share('current_user', Auth::User()) non funziona più perché questo problema https://github.com/laravel/framework/issues/6130

Quello che faccio, invece, è, in primo luogo creare un nuovo fornitore di servizi utilizzando artigianale.

php artisan make:provider ComposerServiceProvider 

Quindi aggiungere ComposerServiceProvider a config/app.php fornitori gamma

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

Quindi aprire app/Providers/ComposerServiceProvider.php che appena creato, all'interno di metodo di avvio aggiungere il seguente

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

Infine, l'importazione View e Auth facciata

use Auth, View; 

Per ulteriori informazioni, vedere http://laravel.com/docs/5.0/views#view-composers

+1

Works! Fantastico, grazie. –

+2

In base a questo problema, "Nella funzione di avvio, Auth :: user() non è stato ancora inizializzato, quindi è stato condiviso con la vista come null." Mi sta succedendo davvero; Auth :: user è nullo. Come sta funzionando per te? – Vic

+0

@Vic Sì, mi è capitato il problema, qual è la tua soluzione? – iatboy

1

In laravel 5 utilizza lo stesso metodo in laravel 4:

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

o utilizzando la view helper:

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

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