【问题标题】:laravel 5.6 error in a foreach blade viewforeach刀片视图中的laravel 5.6错误
【发布时间】:2018-06-14 14:16:46
【问题描述】:

在数组数组的迭代过程中出现此错误:

为 foreach() 提供的参数无效(查看: C:\xampp\htdocs\smartcalws\resources\views\location\index.blade.php

在视图中的代码下方:

 @foreach($Nations as $e)
                <tr>
                  <th scope="row">{{$e->id}}</th>
                  <td>{{$e->name}}</td>   
 @foreach($e->districts as $d)
                  <td>{{$d->name}}</td>
      @endforeach   
 @endforeach

谁能知道原因?

在控制器中,如果我执行 foreach,所有 echo 都可以正常工作:

 foreach($Nations as $e){
   foreach($e->districts as $d){
     echo $d->name;
    }
  }

所有国家都有地区。 echo 打印所有区域。我认为问题出在刀片页面...

return view('Nations.index',compact('Nations',$Nations));

【问题讨论】:

  • 显示设置$Nations值的控制器代码。 $e中也不能有districts,也要检查一下。
  • $Nationdistricts是什么关系?就像@u_mulder 说的,可能没有返回的地区
  • Nations 具有名称、其他信息和地区列表等属性。国家和地区都是一个集合
  • 你是如何将该值传递给刀片的?

标签: php laravel


【解决方案1】:

刀片看起来正确。确保将 Nations 中的正确参数传递给刀片视图。它可能在抱怨第一个 foreach。您需要在控制器中使用以下内容。

return view('yourview', [
    'Nations' => $Nations
]);

也许与使用小写变量名保持一致也很好。也许您正在传递密钥nations,但想使用Nations

【讨论】:

  • 有效!问题是返回视图!我不知道为什么,但我的创造了这个问题......谢谢
【解决方案2】:

您的问题是发送数据以供查看

compact('Nations', $Nations) // It's wrong

试试这些方法:

return view('Nations.index', compact('Nations'));
return view('Nations.index', ['Nations' => $Nations]);
return view('Nations.index')->withNations($Nations);
return view('Nations.index')->with('Nations', $Nations);

【讨论】:

    【解决方案3】:

    确保将数组传递给刀片。

    此外,如果数组计数 > 0,您应该检查循环

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 2021-02-11
      • 2017-06-20
      • 1970-01-01
      • 2017-02-08
      • 2018-11-26
      • 2017-12-24
      • 2019-09-01
      • 2013-08-03
      相关资源
      最近更新 更多