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 deindex.blade.php
. et assurez-vous que le contrôleur retourne tha valeur. c'est à dire,return $categories
avantreturn view ...
- Essayez de supprimer
/
de votre chemin de la vue et aussi vous pouvez poster votre point de vue l'ensemblehome.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à.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux itinéraires
Ce qui signifie que lorsque vous visitez /home, seul contrôleur d'articles articlescontroller@indice est tiré, pas les deux.
Cela signifie que le
$categories
variable utilisée dans la vue n'est pas remplie, car votreindex()
méthode dans CategoriesController est prévu de le faire, mais n'est jamais appelée.Par conséquent, vous avez besoin de faire quelque chose comme ceci
essayez d'utiliser
au lieu de
Salut les gars bien dans mon cas, c'était ma base de données nom de la table qu'il a été ( table_23) dont j'ai gardé sur le undefined variable d'erreur alors je l'ai changé pour (table23) et mon problème a été résolu