Laravel的Foreach语法错误

时间:2017-01-22 16:28:16

标签: php laravel

你好,任何人都可以告诉我这个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'

]);

2 个答案:

答案 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'

]);