你好,任何人都可以告诉我这个laravel的foreach循环我做错了什么:/如果我在不使用session的情况下改变foreach循环,继续得到以下错误或帖子的未定义变量:
Invalid argument supplied for foreach()
@foreach(session('posts') as $post)
@endforeach
控制器:
public function getDashboard(){
$posts = Post::all();
return redirect()->route('dashboard')->with(compact('posts'));
}
或者,如果我执行此其他版本,我会在视图仪表板中获得未定义的$ posts:
控制器:
public function getDashboard(){
$posts = Post::all();
return view('dashboard', ['posts' => $posts]);
}
仪表板视图:
@foreach($posts as $post)
@endforeach
路线:
Route::get('/dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);
答案 0 :(得分:1)
您正在重定向到仪表板路线。使用with()
提供的任何参数都不会自动包含在视图中。
相反,请在返回视图的代码中获取帖子。例如:
$posts = Post::all();
return view('dashboard', compact('posts'));
您当前使用的方法会闪现在会话中,实际上根本不需要。
我看到你已经更新了你的问题。要正确回答,我们需要仪表板视图的代码。
答案 1 :(得分:0)
在controller
中进行以下更改,它应该可以正常工作。
控制器:
public function getDashboard(){
$posts = Post::all()->get();
return redirect()->route('dashboard')->with('posts', $posts);
}
仪表板视图:
@foreach($posts as $post)
@endforeach
路线:
Route::get('/dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);