路由不起作用,来自控制器的变量未定义

后控制器


public function index()

{

  $posts=Post::all();

  return view('home')->with('posts', $posts);

}

网页.php


Route::get('/', function () {

  return view('welcome');

});


Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::resource('posts','PostController');


@foreach($posts as $post)

  <p>{{$post['content']}}</p>

@endforeach

我收到这个错误


Facade\Ignition\Exceptions\ViewException


Undefined variable: posts (View: C:\xampp\htdocs\lts\resources\views\home.blade.php)

$posts未定义


在刀片模板中使变量可选。替换{{ $posts }}为{{ $posts ?? '' }}


感谢大家的帮助,我可以通过添加来修复它


Route::get('/home', 'PostController@index');  

我很想知道为什么这个问题是首先引起的,Route:: resource('posts','PostController');应该处理它。


人到中年有点甜
浏览 126回答 4
4回答

慕村225694

有两种方法可以做到这一点:第一:如果要HomeController用于/home路由,请在 HomeController 中添加以下代码。家庭控制器:public function index(){&nbsp; &nbsp; $posts=Post::all();&nbsp; &nbsp; return view('home')->with('posts', $posts);}第二个您已在'PostController' URL中使用了该resource方法,但您已使用. 所以改变你的路线是这样的:web.phpposts/home在web.phpRoute::get('/home', 'PostController@index')->name('home');Route::resource('posts','PostController');

阿波罗的战车

在您的控制器中更改public function index()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; $posts=Post::all();&nbsp; &nbsp; &nbsp;return view('home')->with('posts', $posts);&nbsp; &nbsp; }改变你的刀片@foreach($posts as $post)&nbsp; &nbsp; {{ $post['content'] }}@endforeach

神不在的星期二

试试这个,而不是你给的 for 循环@foreach($posts&nbsp;as&nbsp;$post) &nbsp;&nbsp;&nbsp;&nbsp;{{&nbsp;$post->content}} &nbsp;&nbsp;&nbsp;&nbsp;@endforeach

摇曳的蔷薇

尝试更换return&nbsp;view('home')->with('posts',&nbsp;$posts);和return&nbsp;view('home',&nbsp;['posts'&nbsp;=>&nbsp;$posts]);和<p>{{$post['content']}}</p>和<p>{{&nbsp;optional($post)->content&nbsp;}}</p>
打开App,查看更多内容
随时随地看视频慕课网APP