Laravel 匿名刀片组件-将插槽变量呈现给函数会产生数组_key_exists():第一个参数应该是字符串或整数

Laravel 匿名刀片组件-将插槽变量呈现给函数会产生数组_key_exists():第一个参数应该是字符串或整数,laravel,laravel-blade,Laravel,Laravel Blade,拉维7.X 我创建了一个简单的匿名输入刀片组件,其中包含验证错误输出。这是以前工作模板的翻译 组成部分如下: <div class="form-group"> <label for='{{$field}}'>{{$title}} @error($field) - <span class='text-danger'> {{ $message }} </span> @enderror </label> &

拉维7.X

我创建了一个简单的匿名输入刀片组件,其中包含验证错误输出。这是以前工作模板的翻译

组成部分如下:

<div class="form-group">
    <label for='{{$field}}'>{{$title}} @error($field) - <span class='text-danger'> {{ $message }} </span> @enderror </label>
    <input id='{{$field}}' name='{{$field}}' type="text" class='form-control{{ $errors->has($field) ? ' is-invalid' : '' }}' placeholder='{{$placeholder}}' {{$attributes}} value='{{ old($field, $value) }}' >
</div>
问题似乎与@error($field)指令和旧的($field,$value)函数有关。如果我更改这些以删除$field变量,它将呈现

如果不存在验证错误,或者会话中没有存储以前的值,那么它似乎也可以正常工作。在这种情况下,它也会正确渲染

经过多次尝试后,有一点似乎是$field变量的类型是HTMLString。我不确定这是不是在转移注意力,但考虑到它在抱怨类型,我认为这是问题的根源

我该如何纠正这个问题?我被难住了


谢谢

我通过在@error,$error->has($field)和old($field,$value)函数中使用html\u entity\u decode($field)解决了这个问题

由于$field是HTMLString的一个实例,html_entity_decode返回一个字符串,这些函数可以接受该字符串。虽然$field只包含字符,但除了类型转换,我看不到对$field内容的其他更改

新组件变为:

<div class="form-group">
    <label for='{{$field}}'>{{$title}} @error(html_entity_decode($field)) - <span class='text-danger'> {{ $message }} </span> @enderror </label>
    <input id='{{$field}}' name='{{$field}}' type="text" class='form-control{{ $errors->has(html_entity_decode($field)) ? ' is-invalid' : '' }}' placeholder='{{$placeholder}}' {{$attributes}} value='{{ old(html_entity_decode($field), $value) }}' >
</div>

{{$title}}@error(html_entity_decode($field))-{{$message}}@enderror

这就解决了问题。我忍不住认为这是Laravel处理这起案件的疏忽。

我已经能够通过在@error,$error->has($field)和old($field,$value)函数中使用html_entity_decode($field)来解决这个问题。它现在正在工作。老实说,这有点出乎意料。
array_key_exists(): The first argument should be either a string or an integer (View: C:\wamp64\www\DE\resources\views\components\input-validation.blade.php)
<div class="form-group">
    <label for='{{$field}}'>{{$title}} @error(html_entity_decode($field)) - <span class='text-danger'> {{ $message }} </span> @enderror </label>
    <input id='{{$field}}' name='{{$field}}' type="text" class='form-control{{ $errors->has(html_entity_decode($field)) ? ' is-invalid' : '' }}' placeholder='{{$placeholder}}' {{$attributes}} value='{{ old(html_entity_decode($field), $value) }}' >
</div>