2015-05-12 9 views
5

Ich benutze Laravel 5, ich versuche Kategorien Variablen zu einer Ansicht ausgeben, aber derzeit bekomme ich eine undefinierte Variable Fehler.Laravel 5 View Composer gibt mir eine undefinierte Variable Fehler

Hier ist der Code.

zunächst in config/app.php:

'App\Providers\AppServiceProvider', 

In app/Providers/AppServiceProvider.php:

public function boot() 
    { 
     View::composer('partials.menu', function($view) 
     { 
      $view->with('categories', Category::all()); 
     }); 
    } 

In partials/menu.blade.php:

<ul> 
    <li>Home</li> 
    @foreach($categories as $category) 
     <li><a href="/store/category/{!! $category->id !!}">{!! $category->name !!}</a></li> 
    @endforeach 
    <li>Basket</li> 
    <li>Checkout</li> 
    <li>Contact Us</li> 
</ul> 

und in store/products.php:

@include('partials.menu') 

Der genaue Fehler, den ich bekomme, ist: Undefinierte Variable: Kategorien jede Hilfe, die dies lösen würde geschätzt.

Dank

+0

Haben Sie eine Lösung gefunden – Nikonah

Antwort

0

Ich denke, die Methode „mit“ ein Array als Argument akzeptiert, dies stattdessen versuchen!

$categories = Categories::all(); 
$view->with(compact('categories')); 
+0

Nicht wirklich. 'with' akzeptiert String und Array beides. Siehe [die Quelle] (https://github.com/laravel/framework/blob/5.5/src/Illuminate/View/View.php#L177). – ruuter

0

Ich fand heraus, das Problem war von Ihrem app/Providers/AppServiceProvider.php.

In Ihrer Boot-Methode, view::composer ist zu erhalten eine Reihe von Ansichten Ihr Komponisten sollte gelten. das heißt View::composer(['partials.menu'], function($view) { .. }

Siehe die vollständige Lösung:

public function boot() 
{ 
    View::composer(['partials.menu'], function($view) 
    { 
     $view->with('categories', Category::all()); 
    }); 
} 
0

Sie müssen richtig die Kategorien Klasse in der Abfrage übergeben, nur Categories::all()-\App\Categories::all() ändern vorausgesetzt, Sie nicht den Namensraum geändert haben.

0

Versuchen Sie diese Befehle

composer dump-autoload 
or 
php artisan cache:clear 
or 
php artisan config:clear 

manchmal diese einfachen Tricks helfen.

Verwandte Themen