2017-01-22 70 views
1

您好谁能告诉我什么即时做错了这个laravel的foreach循环:/保持提示以下错误:或者岗位未定义的变量,如果我改变foreach循环,而无需使用会话:Laravel的的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')); 

    } 

或者,如果我这样做,其他版本我得到的视图仪表板未定义$帖子:

控制器:

public function getDashboard(){ 

     $posts = Post::all(); 

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

    } 

仪表板视图:

@foreach($posts as $post) 

@endforeach 

路线:

Route::get('/dashboard', [ 

    'uses' => '[email protected]', 
    'as' => 'dashboard', 
    'middleware' => 'auth' 

]); 
+0

似乎会不会出于某种原因。请在'foreach(session('posts')...')之前放置'{{dd(session('post'))}}并显示转储结果 –

+0

正如我们所说的那样,现在就这样做一秒 – steven

+0

我刷新仪表板页面,我得到的视图没有造型只是内容 – steven

回答

1

你重定向到仪表板的路线。任何使用with()提供的参数都不会自动包含在视图中。

取而代之,获取返回视图的代码中的帖子。示例:

$posts = Post::all(); 
return view('dashboard', compact('posts')); 

您当前使用的方法闪烁显示会话,实际上根本不需要该方法。


我看到你已经更新了你的问题。为了正确回答,我们需要仪表板视图的代码。

+0

在foreach循环中仍然收到未定义的错误 – steven

+0

@steven是在t中的foreach循环他的仪表板视图? – ollieread

+0

它在仪表板视图中。 – steven

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' => '[email protected]', 
'as' => 'dashboard', 
'middleware' => 'auth' 

]);