For my easy I have made a component which contains a dropdown in it. So that I can use it everywhere when I need it. This is the component
<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
What I do here is the title, input filed name id and other kinds of stuff make dynamically via @slot() like below
@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
Ok things work well but when I submit the form which contains this component when the validation gets fails then it generates the below error.
array_key_exists(): The first argument should be either a string or an integer
The problem occurs with this line when form redirect back with validation errors
{{ old($select_district) && $district->id == old($select_district) ? 'selected' : '' }}
If I remove the {{ old($select_district) }} or if I just use it like {{ old('name_here') }} then things working as they should be. But since I need to use this component inside more pages I would like to fix this issue . So could anyone please help me to fix this.
Advertisement
Answer
This may be tricky but I was able to fix the error like below
old(''.$select_district.'')
Thanks