PostController
Route::get('/home', 'PostController@index');
web.php
Facade\Ignition\Exceptions\ViewException Undefined variable: posts (View: C:\xampp\htdocs\lts\resources\views\home.blade.php)
home
@foreach($posts as $post) <p>{{$post['content']}}</p> @endforeach
I obtenir cette erreur
Route::get('/', function () { return view('welcome'); }); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); Route::resource('posts','PostController');
$ posts
ne sont pas définis
Rendez la variable facultative dans le modèle de lame. Remplacez {{$ posts}}
par {{$ posts ?? ''}}
Merci pour l'aide à tous. J'ai pu résoudre ce problème en ajoutant
public function index() { $posts=Post::all(); return view('home')->with('posts', $posts); }
J'aimerais savoir pourquoi ce problème a été causé en premier lieu Route :: resource ('posts', 'PostController');
aurait dû le gérer.
4 Réponses :
Essayez ceci au lieu de ce que vous avez donné pour la boucle
@foreach($posts as $post) {{ $post->content}} @endforeach
Essayez de remplacer
<p>{{ optional($post)->content }}</p>
par
<p>{{$post['content']}}</p>
et
return view('home', ['posts' => $posts]);
par
return view('home')->with('posts', $posts);
Pouvez-vous vérifier que vous frappez ce contrôleur? public function index () {dd ('Le contrôleur attendu est en cours d'exécution'); $ posts = Publier :: tout (); return view ('home') -> with ('posts', $ posts); }
Changement dans votre contrôleur
@foreach($posts as $post) {{ $post['content'] }} @endforeach
changement dans votre lame
public function index() { $posts=Post::all(); return view('home')->with('posts', $posts); }
{{$ post ['content']}}
changez cela.
Comment cela aiderait-il lorsque " $ posts n'est pas défini "?
return view ('home') -> with ('posts', $ posts);
{{$ post ['content']}} ou {{$ post-> content}}
Il existe deux façons de procéder:
Première:
Si vous souhaitez utiliser HomeController
pour / home
route puis ajoutez le code suivant dans le HomeController.
HomeController:
Route::get('/home', 'PostController@index')->name('home'); Route::resource('posts','PostController');
Second One
Vous avez utilisé la méthode resource
dans web.php
pour que votre URL 'PostController' commence à partir de posts
Mais vous avez utilisé / home
.
Alors changez votre itinéraire comme ceci:
Dans web.php
public function index() { $posts=Post::all(); return view('home')->with('posts', $posts); }
@HaseebAhmed Quelle méthode utilisée pour vous? Premier ou deuxième.
on dirait que c'était le problème, mauvaise idée de récupérer les messages sur la page d'accueil?
@HaseebAhmed Vous avez raison, deuxième méthode plus précise.
Êtes-vous sûr d'obtenir des variables de la table
Posts
?donc en ajoutant cette Route :: get ('/ home', 'PostController @ index'); avant Route :: resource ('posts', 'PostController'); La fonction d'index semble fonctionner. Cela ne devrait-il pas être géré avec Route :: resource ('posts', 'PostController');
Où obtenez-vous cette erreur?
PostController @ index
affichehome.blade
, tout commeHomeController @ index
. Avez-vous défini des$ posts
dans votreHomeController
?il n'y a rien dans le homecontroller
@HaseebAhmed Quel contrôleur utilisé pour récupérer le message? PostController ou HomeController.
@Amit Senjaliya j'ai créé un contrôleur de poste avec --resource et la méthode d'indexation avec le code est dans le contrôleur de poste.
@HaseebAhmed Quand cette erreur se produit? qu'est-ce qu'une URL? Veuillez partager avec nous.
l'URL est localhost / lts / public / home
@HaseebAhmed C'est pourquoi une erreur se produit. Je publierai la réponse.
Je récupère les messages sur la page d'accueil, l'URL ne change pas.
Vous voudrez peut-être également jeter un œil à l'installation / à la configuration de Laravel.
/ public
doit être le DocumentRoot et ne pas apparaître dans vos URL.je vais le réparer avant de le déployer sur un serveur en direct.
@HaseebAhmed Pouvez-vous lire ma réponse. Dites-moi n'importe quelle question.