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)
form.blade.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>
错误在@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
但错误又来了。问题出在{!! Form()!!},但为什么?
答案 0 :(得分:2)
问题在于您的命名方法。你给所有输入相同的名字,但没有键。通过这种方式,laravel认为它是一个阵列。所以在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>
或者您可以使用$ loop-&gt;索引变量。 $ loop-&gt;索引是当前循环迭代的索引。所以你可以使用{!! Form::text('name[$loop->index]', $stage->name, ['class' => 'form-control']) !!}