【问题标题】:Laravel's Foreach syntax errorLaravel 的 Foreach 语法错误
【发布时间】:2017-06-07 04:40:21
【问题描述】:

您好,谁能告诉我我在这个 laravel 的 foreach 循环中做错了什么:/ 如果我在不使用会话的情况下更改 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'

]);

【问题讨论】:

  • 似乎会话由于某种原因无法正常工作。请将{{ dd(session('post')) }} 放在foreach(session('posts') ... 之前并显示转储。
  • 在我们说话的时候做这件事。一秒。
  • 当我刷新仪表板页面时,我得到的视图没有样式,只有内容。
  • 并显示一个空值。
  • 我已更新我的代码以包含路线。

标签: php laravel


【解决方案1】:

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

相反,在返回视图的代码中获取帖子。示例:

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

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


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

【讨论】:

  • @steven 是仪表板视图中的 foreach 循环?
  • 它在仪表板视图中。
  • @steven 你试过转储$posts 的内容吗? {{ dd($posts) }}
  • 在我们说话的时候做这件事。一秒。
  • 当我刷新仪表板页面时,我得到的视图没有样式,只有内容。
【解决方案2】:

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'

]);

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2019-10-30
    • 2020-11-23
    • 2021-09-20
    • 1970-01-01
    • 2014-06-08
    • 2017-04-15
    • 2016-11-16
    相关资源
    最近更新 更多