Undefined variable: $ Laravel 5

C'est le code de CategoriesController:

 public function index()
{
    $categories = Category::all();
    return view('/home', compact('categories'));
}

Et c'est le code que j'ai écris pour le home.blade.php

                @foreach($categories as $cat)
                @endforeach

Puis dans home.blade.php

J'obtiens cette erreur: Undefined variable: categories

Pourquoi ce qui se passe ? Tout fonctionne bien avec des Articles mais pas des catégories et le code est le même.

Home.blade.php

@extends('app')

@section('content')

     <div class="col-md-4 pull-right">
      <div class="panel panel-primary">
        <div class="panel-heading">
          <h3 class="panel-title">Categories</h3>
        </div>
        <div class="panel-body">

                          @foreach($categories as $cat)
                          <div class="col-lg-6">
                            <ul class="list-unstyled">
                                <li><a href="articles/category/{{  }}">News</a>
                                </li>
                            </ul>
                        </div>                          
                          @endforeach
   </div>
      </div>     
    </div>


  @if(count($articles))

    @foreach($articles as $article)

<div class="panel panel-default col-md-8">
  <div class="panel-heading">

  <h3>{{ $article->title }}</h3>
   <small>posted by <a href="users/{{ $article->author->name }}">{{ $article->author->name }}</a> {{ $article->created_at }}</small>
  </div>
  <div class="panel-body">
  {!! str_limit($article->body, 1000) !!} 
    <hr>
  <a href="{{ url('/articles/'.$article->slug) }}">Read More</a>   
  </div>
</div>

        @endforeach
    @else
        <h1>No articles at the moment.</h1>
    @endif
    <br>
    {!! $articles->render() !!}
@stop
  • Veuillez vérifiez qu'aucun autre point de vue, il y a comme index.php au lieu de index.blade.php. et assurez-vous que le contrôleur retourne tha valeur. c'est à dire, return $categories avant return view ...
  • Essayez de supprimer / de votre chemin de la vue et aussi vous pouvez poster votre point de vue l'ensemble home.blade.php?
  • Suppression de "/" ne fonctionne pas. J'ai ajouté home.blade.php @IvankaTodorova
  • Il semble OK pour moi. Êtes-vous sûr que la variable d'erreur vient du fait que ce point de vue exact home.blade.php?
  • Je ne pense pas ainsi. Si je fais afficher disons à la page "contact" puis la même erreur se produit, je n'obtiens pas ce que pourrait être le problème
  • Il y a deux itinéraires: Itinéraire::get('/home', 'contrôleur d'articles articlescontroller@index'); Route::get('/home', 'CategoriesController@index'); C'est ça le problème. Si j'ai un de ces routeur puis tout ce travail, mais sans articles ou catégories
  • Tout comme une autre note de côté, votre point de vue pourrait utiliser @forelse @empty plutôt que @if @foreach. Un joli petit ajoutée de la structure de contrôle à faire ce que vous faites là.

InformationsquelleAutor zlotte | 2015-07-07