2015-05-12 30 views
5

Używam Laravel 5, Próbuję wyprowadzić zmienne kategorii do widoku, ale obecnie otrzymuję niezdefiniowany błąd zmiennej.Laravel 5 Zobacz kompozytor daje mi niezdefiniowany błąd zmiennej

Oto kod.

pierwsze w konfiguracji/app.php:

'App\Providers\AppServiceProvider', 

APP/dostawców/AppServiceProvider.php:

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

W podszablonów/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> 

oraz w sklepie/products.php:

@include('partials.menu') 

Dokładny błąd, jaki otrzymuję, to: Niezdefiniowana zmienna: kategorie, które powinny być pomocne przy rozwiązywaniu tego problemu.

Dzięki

+0

Czy znalazłeś rozwiązanie? – Nikonah

Odpowiedz

0

myślę, że metoda „z” przyjmuje tablicę jako argument zamiast spróbować!

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

Niezupełnie. 'with' akceptuje zarówno łańcuch, jak i tablicę. Zobacz [źródło] (https://github.com/laravel/framework/blob/5.5/src/Illuminate/View/View.php#L177). – ruuter

0

Odkryłem, że problem był spowodowany przez twój numer app/Providers/AppServiceProvider.php.

W metodzie bootowania view::composer ma otrzymać tablicę widoków, do której powinien się zgłosić Twój kompozytor. tj View::composer(['partials.menu'], function($view) { .. }

Zobacz kompletne rozwiązania:

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

trzeba zdać klasę kategorie w zapytaniu poprawnie, wystarczy zmienić Categories::all() do \App\Categories::all() zakładając, że nie zmienia nazw.

0

Spróbuj tych poleceń

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

czasami te proste sztuczki pomogą.