Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:helpers.php第531行中的ErrorException:_Php_Forms_Laravel - Fatal编程技术网

Laravel:helpers.php第531行中的ErrorException:

Laravel:helpers.php第531行中的ErrorException:,php,forms,laravel,Php,Forms,Laravel,请帮我解决这个奇怪的问题。我有一个页面,其中一个部分是一个HTML表单,有三个字段和提交按钮。如果我加载页面,一切正常。如果我提交表格,会出现以下错误: ErrorException in helpers.php line 531: htmlentities() expects parameter 1 to be string, array given (View: C:\xampp\htdocs\beta\resources\views\admin\table\partials\form.b

请帮我解决这个奇怪的问题。我有一个页面,其中一个部分是一个HTML表单,有三个字段和提交按钮。如果我加载页面,一切正常。如果我提交表格,会出现以下错误:

ErrorException in helpers.php line 531:
htmlentities() expects parameter 1 to be string, array given (View: 
C:\xampp\htdocs\beta\resources\views\admin\table\partials\form.blade.php) 
(View: C:\xampp\htdocs\beta\resources\views\admin\table\partials\form.blade.php)
php包含有问题的表单。代码如下:

{!! Form::model($season, [
    'method' => 'post',
    'route' => ['admin.tables.show', $season->id]
]) !!}

@foreach($stages as $stage)
<div class="col-md-12 formleft">
    <div class="col-md-4">
        <div class="form-group">
            {!! Form::label('name') !!}
            {!! Form::text('name[]', $stage->name, ['class' => 'form-control']) !!}
        </div>
    </div>
    <div class="col-md-4">
        <div class="form-group">
            {!! Form::label('url') !!}
            {!! Form::text('url[]', $stage->url, ['class' => 'form-control']) !!}
        </div>
    </div>
    <div class="col-md-4">
        <div class="form-group">
            {!! Form::label('type_id', 'Type') !!}
            {!! Form::select('type_id[]', $types, $stage->type_id, ['class' => 'form-control']) !!}
            {!! Form::hidden('id[]', $stage->id) !!}
        </div>
    </div>
</div>
@endforeach

{!! Form::submit('Save stages', ['class' => 'btn btn-primary']) !!}

{!! Form::close() !!}

<br>
{!!Form::model($seasure[
'方法'=>'发布',
'route'=>['admin.tables.show',$seasure->id]
]) !!}
@foreach($stages作为$stage)
{!!Form::label('name')!!}
{!!Form::text('name[]',$stage->name,['class'=>'Form control'])
{!!Form::label('url')!!}
{!!Form::text('url[]',$stage->url,['class'=>'Form control'])
{!!Form::label('type_id','type')
{!!表单::选择('type_id[],$types,$stage->type_id,['class'=>'Form control'])
{!!Form::hidden('id[]',$stage->id)
@endforeach
{!!表单::提交('Save stages',['class'=>'btn-btn-primary'])
{!!Form::close()!!}

错误在@foreach循环的某个地方。我已经一个接一个地删除了表单字段,但每次都会出现相同的错误。只有删除所有表单字段,它才能正常工作。如果我将表单字段保留为无值,则错误会再次出现。我不知道发生了什么事

为了调试代码,我更改了@foreach循环,如下所示:

@foreach($stages as $stage)
<div class="col-md-12 formleft">
    <div class="col-md-4">
        <div class="form-group">
            {!! Form::label('name') !!}
            {!! Form::text('name[]', null, ['class' => 'form-control']) !!}
        </div>
    </div>
</div>
@endforeach
@foreach($stages作为$stage)
{!!Form::label('name')!!}
{!!Form::text('name[],null,['class'=>'Form control'])
@endforeach

但错误再次出现。问题出在{!!Form()!!}中,但为什么呢?

问题出在您的命名方法中。您为所有输入提供相同的名称,但没有键。这样,拉威尔认为这是一个数组。所以在foreach前面放一个计数器,给每个名字一个键,括号内的数字。如下代码所示:

@php
    $i = 0;
@endphp
    @foreach($stages as $stage)
    <div class="col-md-12 formleft">
        <div class="col-md-4">
            <div class="form-group">
                {!! Form::label('name') !!}
                {!! Form::text('name[$i]', $stage->name, ['class' => 'form-control']) !!}
            </div>
        </div>
        <div class="col-md-4">
            <div class="form-group">
                {!! Form::label('url') !!}
                {!! Form::text('url[$i]', $stage->url, ['class' => 'form-control']) !!}
            </div>
        </div>
        <div class="col-md-4">
            <div class="form-group">
                {!! Form::label('type_id', 'Type') !!}
                {!! Form::select('type_id[$i]', $types, $stage->type_id, ['class' => 'form-control']) !!}
                {!! Form::hidden('id[$i]', $stage->id) !!}
            </div>
        </div>
    </div>
   @php
    $i++
   @endphp
    @endforeach

    {!! Form::submit('Save stages', ['class' => 'btn btn-primary']) !!}

    {!! Form::close() !!}

    <br>
@php
$i=0;
@endphp
@foreach($stages作为$stage)
{!!Form::label('name')!!}
{!!Form::text('name[$i]',$stage->name,['class'=>'Form control'])
{!!Form::label('url')!!}
{!!Form::text('url[$i]',$stage->url,['class'=>'Form control'])
{!!Form::label('type_id','type')
{!!Form::select('type_id[$i],$types,$stage->type_id,['class'=>'Form control'])
{!!Form::hidden('id[$i]',$stage->id)
@php
$i++
@endphp
@endforeach
{!!表单::提交('Save stages',['class'=>'btn-btn-primary'])
{!!Form::close()!!}


或者可以使用$loop->index变量。$loop->index是当前循环迭代的索引。所以你可以使用
{!!Form::text('name[$loop->index],$stage->name,['class'=>'Form control'])!!

请在循环中显示
{dd($stage)}}
的内容。你给了其中一个Form::text字段一个数组。给我们看一下{dd($stage)}我认为问题不在$stage中。如果我用一些字符串替换$stage->name,那么在提交之后,所有字段都会得到相同的结果error@VinceCarter试着一个接一个地注释每个字段,看看什么时候没有显示错误。非常感谢。现在它可以工作了,但是仍然很奇怪为什么仅仅提交表单它就不能工作?您不需要使用
$i++
,您可以使用
$loop
变量@VinceCarter随时都可以!因为每个输入都必须有一个唯一的名称。控制器请求中的这种方式知道它有多少个输入,每个唯一的输入都有一个值。这不是因为这个。这是因为
model()
方法重新填充提交的数据。但这仍然是一个很好的答案@VinceCarter如果答案对你有帮助,你应该投票表决。@AlexeyMezenin tnx感谢你的支持!