【问题标题】:Invalid argument supplied for foreach() in Laravel Blade. In dd correct valuesLaravel Blade 中为 foreach() 提供的参数无效。在 dd 正确的值
【发布时间】:2020-03-08 05:19:31
【问题描述】:

我想在我的blade.php 中使用一些数据。除其他外,我还想显示街道名称和状态。

这是我的blade.php中的相关代码:

@foreach($form['streets'] as $street)
   <tr>
       <td>{{$street['name']}}</td>
       <td>{{$street['status']}}</td>
       <td>
       <a href="#">Zie pdf</a>
       </td>
   </tr>
@endforeach

dd $form:

array:4 [▼
  "id" => 2456
  "name" => "Some name"
  "percentage" => array:1 [▼
    0 => array:4 [▼
      "done" => 4
      "ndone" => 0
      "started" => 0
      "nvt" => 56
    ]
  ]
  "streets" => array:4 [▼
    0 => array:2 [▼
      "name" => "Name"
      "status" => "Klaar"
    ]
    1 => array:2 [▼
      "name" => "Name"
      "status" => "Klaar"
    ]
    2 => array:2 [▼
      "name" => "Name"
      "status" => "Klaar"
    ]
    3 => array:2 [▼
      "name" => "Name"
      "status" => "Klaar"
    ]
  ]
]

dd $forms:

array:5 [▼
  "projectName" => "Some Name"
  "projectCode" => "abc123456"
  "totalHouses" => 60
  "totalForms" => null
  "forms" => array:3 [▼
    0 => array:4 [▼
      "id" => 2456
      "name" => "Some Name"
      "percentage" => array:1 [▼
        0 => array:4 [▼
          "done" => 4
          "ndone" => 0
          "started" => 0
          "nvt" => 56
        ]
      ]
      "streets" => array:4 [▼
        0 => array:2 [▼
          "name" => "Some Street 1"
          "status" => "Klaar"
        ]
        1 => array:2 [▼
          "name" => "Some Street 2"
          "status" => "Klaar"
        ]
        2 => array:2 [▼
          "name" => "Some Street 3"
          "status" => "Klaar"
        ]
        3 => array:2 [▼
          "name" => "Some Street 4"
          "status" => "Klaar"
        ]
      ]
    ]
    1 => array:4 [▼
     "id" => 2489
     "name" => "Some Name"
     "percentage" => array:1 [▼
        0 => array:4 [▼
          "done" => 6
          "ndone" => 0
          "started" => 0
          "nvt" => 54
        ]
      ]
      "streets" => array:2 [▼
        0 => array:2 [▼
          "name" => "Some Street 5"
          "status" => "Klaar"
        ]
        1 => array:2 [▼
          "name" => "Some Street 6"
          "status" => "Klaar"
        ]
      ]
    ]
    "totalForms" => 6
  ]
]

因此,当我尝试对 $street 进行 dd(转储并死掉)时,它确实得到了正确的值,当我将 ['name'] 放在它后面时,它也可以工作。但是当我在没有任何 dd 的情况下运行代码时,它会失败。

所以我想使用每个房子的名称和状态。但由于某种原因,我在 $street 的 foreach 上遇到错误。

我想知道为什么以及如何解决它。

【问题讨论】:

    标签: php laravel foreach laravel-blade


    【解决方案1】:

    试试这样:

    <td>{{ $street->name }}</td>
    <td>{{ $street->status }}</td>
    

    祝你好运!

    【讨论】:

    • 感谢您的回答。然而,这不仅仅是喷射的解决方案。我现在得到错误 Trying to get property 'name' of non-object
    【解决方案2】:

    您是否对@foreach($form['streets'] as $street) 进行了循环,例如@foreach($forms as $form)?如果是这样,您可能有一个或多个不正确的表格,即使第一个表格是不正确的。当您添加dd() 时,代码会在到达不正确的$form 之前停止执行。

    我建议你dd() 所有$forms 并检查所有streets

    【讨论】:

    • 你是对的。我确实有一个 $forms (不是那个确切的名称),我从中得到 $form 。我只是按照你说的做了,看来我的代码应该可以工作。
    • 你能发布输出吗?
    • 这和dd($form)一样,不可能是对的;)
    • 是的,我意识到,刚刚用正确的值再次编辑 :)
    • 我也看不出有什么问题。检查错误指向的确切行(在storage/framework/views/*.php),也许它实际上是不同的地方。
    【解决方案3】:

    尝试如下使用

    @foreach($form->streets as $street)
       <tr>
        <td>
          @if(isset($street['name']))
            {{ $street['name'] }}
          @endif
        </td>
        <td>
          @if(isset($street['status']))
            {{ $street['status'] }}
          @endif
        </td>
       </tr>
    @endforeach
    

    【讨论】:

    • 现在检查@SilkeNL
    • 感谢您的编辑。现在我只是得到错误尝试获取非对象的属性“街道”。应该都是数组而不是对象吧?
    • 调试打印 {{ $form }} 并检查对象,它的所有键是否存在?
    • 是的,密钥存在
    猜你喜欢
    • 2018-02-26
    • 2020-09-14
    • 2018-12-09
    • 1970-01-01
    • 2015-06-29
    • 2022-01-27
    • 2017-11-26
    • 2021-12-25
    • 2019-10-05
    相关资源
    最近更新 更多