为foreach()提供的参数无效 - 请求? Laravel

时间:2016-05-25 07:13:16

标签: laravel httprequest blade

我的请求有问题。我想我已经知道为什么我会收到这个错误,但不知道如何修复它......

这是我刀片中的这张表格:

{!! Form::open(['action' => 'TrickController@tags', 'class' => 'blog-form']) !!}

  @foreach($ids as $id)
    {!! Form::hidden('id[]', $id) !!}
  @endforeach

  {!! Form::label('tags', 'Tags') !!}
  {!! Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'example, example, example']) !!}
  <br>
  {!! Form::submit('Absenden', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}

更具体地说,这是因为foreach循环中的隐藏字段 如果我做错了什么,我的请求应该给我错误,但它给了我这个错误:

Invalid argument supplied for foreach() 

如果我做的一切都是正确的,那么多个id会被传递给我的控制器并且我的整个代码都能正常工作。但如果用户做错了,我需要我的请求中的错误。

有人知道我可以对付它吗?

如果我只传递一个id,我的请求就可以了。

{!! Form::hidden('id', 5) !!}

感谢您抽出宝贵时间。

找到了一个好方法:) - 已解决的代码:

我在ID数组

上使用了serialize函数
$data = serialize($id_array);

然后我将它传递给了我的视图并在我的隐藏字段中使用它而没有任何foreach

{!! Form::hidden('id', $data) !!}

在下一个控制器函数中,我只使用了unserialize函数

$id = unserialize($id);

并将它们作为数组返回:)

1 个答案:

答案 0 :(得分:1)

foreach循环期望你给它一些它可以迭代的东西。我想你正在使用的$ids变量有时不符合这个条件,因此你得到错误Invalid argument supplied for foreach()

要解决此问题需要考虑的一些问题:

检查变量$ids的设置方式,并考虑重写初始化此变量的方式。您可以添加用于将变量初始化为您的问题的代码,以获得有关如何更改它的一些建议。

通过使用$idsis_array($ids)等方法进行检查,然后将其初始化为空数组(如果它返回的内容),请先检查is_object($ids)变量,然后再将其传递给视图是不可迭代的。

或者你可以将两个点组合起来!

希望有所帮助。