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

Routes are not working, variable from controller are coming up as undefined

后控制器

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 未定义

在 blade 模板中将变量设为可选。将 {{ $posts }} 替换为 {{ $posts ?? '' }}

感谢大家的帮助,我可以通过添加

来修复它
Route::get('/home', 'PostController@index');  

我很想知道为什么首先会出现这个问题Route:: resource('posts','PostController'); 应该已经解决了。

试试这个而不是你给循环的东西

@foreach($posts as $post)
    {{ $post->content}}
@endforeach

尝试更换

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

return view('home', ['posts' => $posts]);

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

<p>{{ optional($post)->content }}</p>

改变你的控制器

public function index()
    {
      $posts=Post::all();
     return view('home')->with('posts', $posts);
    }

你的blade

有变化
@foreach($posts as $post)
    {{ $post['content'] }}
@endforeach

有两种方法可以做到这一点:

第一个:

如果你想为 /home 路由使用 HomeController 然后在 HomeController 中添加以下代码。

家庭控制器:

public function index()
{
    $posts=Post::all();
    return view('home')->with('posts', $posts);
}

第二个

你在web.php中使用了resource方法所以你的'PostController'URL从posts开始但是你使用了/home . 所以像这样改变你的路线:

web.php

Route::get('/home', 'PostController@index')->name('home');
Route::resource('posts','PostController');