【发布时间】:2021-03-04 19:05:34
【问题描述】:
Laravel 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>
在视图中,我执行以下操作:
<x-input-validation autofocus onblur="validate()">
<x-slot name="field">name</x-slot>
<x-slot name="title">Name</x-slot>
<x-slot name="placeholder">Add Name</x-slot>
<x-slot name="value">{{$app->name}}</x-slot>
</x-input-validation>
在渲染期间,我收到以下错误消息:
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)
问题似乎与@error($field) 指令和旧的($field, $value) 函数有关。如果我更改这些以删除 $field 变量,它将呈现。
如果不存在验证错误,或者会话中没有存储以前的值,它似乎也可以正常工作。在这种情况下也能正常渲染。
经过多次尝试,一个花絮似乎是 $field 变量是 HTMLString 类型的。不确定这是否是红鲱鱼,但鉴于它在抱怨类型,我假设这是问题的根源。
任何想法我应该如何纠正这个问题?我被难住了。
谢谢!
【问题讨论】:
-
我已经能够通过在每个 @error、$error->has($field) 和 old($field, $value) 函数中使用 html_entity_decode($field) 来解决这个问题.它现在正在工作。老实说,有点出乎意料。
标签: laravel laravel-blade