PostController
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
web.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');
引起的。
答案 0 :(得分:2)
有两种方法可以做到这一点:
第一个:
如果要将HomeController
用于/home
路由,请在HomeController中添加以下代码。
HomeController:
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
第二个
您在resource
中使用了web.php
方法,因此您的'PostController'URL从posts
开始,但是您已经使用了/home
。
因此,请像这样更改您的路线:
在web.php
Route::get('/home', 'PostController@index')->name('home');
Route::resource('posts','PostController');
答案 1 :(得分:1)
在您的控制器中按下
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
更换刀片
@foreach($posts as $post)
{{ $post['content'] }}
@endforeach
答案 2 :(得分:0)
尝试使用此方法,而不是为循环赋予的功能
@foreach($posts as $post)
{{ $post->content}}
@endforeach
答案 3 :(得分:0)
尝试更换
return view('home')->with('posts', $posts);
使用
return view('home', ['posts' => $posts]);
和
<p>{{$post['content']}}</p>
与
<p>{{ optional($post)->content }}</p>