首页 > 解决方案 > 具有 old() 辅助函数的 Laravel 组件

问题描述

为了我的方便,我制作了一个包含下拉列表的组件。这样我就可以在需要时在任何地方使用它。这是组件

 <h5>{{$title}}</h5>

    <select class="select" {{$required_district}} name="{{$select_district}}" id="{{$select_district}}">

        <option value="" selected> {{ __('Select the district') }} </option>

        @foreach($districts as $district)
            <option value="{{ $district->id }}"
               {{ old($select_district) && $district->id == old($select_district)  ? 'selected' : '' }}>
                {{ $district->name_en }}</option>
        @endforeach

    </select>

    @error($select_district)
    <label class="text-danger" style="">{{$message}}</label>
    @enderror

我在这里所做的是标题、输入文件名 id 和其他类型的东西通过@slot() 动态生成,如下所示

    @component('destrict')

 @slot('title')
 Where do you want a job to be started
 @endslot

 @slot('select_district')
 selected_district
 @endslot

 @slot('required_district')
 required
 @endslot

    @endcomponent

好的,但是当我在验证失败时提交包含此组件的表单时,它会生成以下错误。

array_key_exists():第一个参数应该是字符串或整数

当表单重定向返回并出现验证错误时,此行会出现问题

 {{ old($select_district) && $district->id == old($select_district)  ? 'selected' : '' }}

如果我删除了{{ old($select_district) }}或者我只是像使用它一样,{{ old('name_here') }}那么事情应该会正常工作。但是因为我需要在更多页面中使用这个组件,所以我想解决这个问题。所以有人可以帮我解决这个问题。

标签: phplaravelformsvalidation

解决方案


这可能很棘手,但我能够修复如下错误

old(''.$select_district.'')

谢谢


推荐阅读