Reputation: 1166
I have a form with multi-select dropdown
<form role="form" method="post" action="{{route('dev-admin.developer-contractor-associations.add.post')}}" autocomplete="off">
<div class="col-12">
@csrf
<div class="form-group {{ $errors->has('defect-type-id') ? ' has-danger' : '' }}">
<select class="selectpicker {{ $errors->has('defect-type-id') ? 'is-invalid' : '' }}" name="defect-type-id" id="defect-type-id" multiple data-style="selectpicker-style" data-width="100%" title="Defect Types">
@foreach(App\DefectType::select('id','title')->get() as $defect_type)
<option value="{{$defect_type->id}}">{{$defect_type->title}}</option>
@endforeach
</select>
@if ($errors->has('defect-type-id'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('defect-type-id') }}</strong>
</span>
@endif
</div>
</div>
<div class="col-12">
<div class="text-center">
<button onclick="return confirm('Are you sure to associate this contractor?')" type="submit" class="btn btn-primary my-4">Associate</button>
</div>
</div>
</form>
when I want to get the value in controller I only receive 1 selected value instead of a list of selected option :
public function postAddDeveloperContractorAssociation(Request $request ) {
$defect_type_id = $request->input('defect-type-id');
dd($defect_type_id);
return redirect()->route('dev-admin.developer-contractor-associations.index')->withStatus(__('Contractor has been added.'));
}
When I dd
this all i get is something like "2"
instead of [1, 2, 3]
or something like that
Upvotes: 3
Views: 536
Reputation: 5078
You have to add an empty pair of brackets after the select input name.
<select class="selectpicker {{ $errors->has('defect-type-id') ? 'is-invalid' : '' }}" name="defect-type-id[]" id="defect-type-id" multiple data-style="selectpicker-style" data-width="100%" title="Defect Types">
@foreach(App\DefectType::select('id','title')->get() as $defect_type)
<option value="{{$defect_type->id}}">{{$defect_type->title}}</option>
@endforeach
</select>
note the name="defect-type-id[]"
instead just name="defect-type-id"
Upvotes: 2