2016-07-04 1 views
0

Versucht, Service Provider zu verwenden, um eine Variablen in allen Ansichten Seiten, die @ extends ('layouts.app'), aber nicht funktioniert, zunächst, ich zeige die Codes unten.Laravel 5.2 - ServiceProvider boot funktioniert nicht

AppServiceProvider

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use Auth; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     // Using class based composers... 
     view()->composer('layouts.app', function($view){ 

      $view->with('current_user', Auth::user()); 

     }); 

    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 

Wenn ich die Seite besuchen, die {{$ current_user}} aufruft, zeigt es die folgenden Fehler

ErrorException in 5a5612347179ad88a6d4ebacc5d911a184c1b4ed.php line 14: 

Undefined variable: current_user (View: C:\xampp\htdocs\soyegg\resources\views\shops\edit\showroom.blade.php) 

durch eine Reihe von Fragen auf der Website gelöst Went und überprüften die Folges, aber immer noch fehlgeschlagen: 1. AppServiceProvider ist in Config.app (Standard von Laravel 5.2) 2. php Artisan klar kompiliert 3. php Handwerker optimieren 4. Überprüfen Sie, ob es kompilierte.php gibt und versuchen Sie es manuell zu löschen, aber es gibt weder Storage/Framework noch Vendor.

Bitte helfen!

Antwort

0

Ich denke, Ihre ServiceProvider funktioniert gut, Sie müssen nur ändern, wie Sie Daten an die Ansicht übergeben. Ich habe es selbst getestet und kann bestätigen, dass das Übergeben von Daten an eine Ansicht, die später in @extends() enthalten ist, nicht funktioniert. Stattdessen können Sie eine andere Methoden verwenden:

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

Oder mit Wildcard:

view()->composer('*', function ($view) { 
    $view->with('current_user', Auth::user()); 
}); 

// wildcard with prefix 
view()->composer('prefix.*', function ($view) { 
    $view->with('current_user', Auth::user()); 
}); 
+0

Vielen Dank für Ihre schnelle Antwort Rifki! Sehr geschätzt. Für den Joker bedeutet dies, dass alle Seiten eine solche Variable haben werden? – warmjaijai

+0

Mit der Share-Methode wird die Seite normalerweise ohne Fehler geladen, aber {{$ current_user}} hat einfach keinen Wert und ich überprüfe mit {{$ current_user-> id}} und es heißt, dass ich die Eigenschaft non Objekt. Ich überprüfe noch einmal, ob {{Auth :: user()}} selbst auf der Seite funktioniert und es funktioniert. – warmjaijai

+0

Entschuldigung, um eine andere Frage hier hinzuzufügen. Ich habe versucht, einen weiteren view() -> Composer unterhalb des current_user-Composers hinzuzufügen, indem ich $ current_user-> id aufruft, aber er sagt current_user ist eine undefinierte Variable. Gibt es einen geeigneteren Weg, dies zu tun? – warmjaijai