Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel get multi selected drop down value to controller

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

like image 443
M.Izzat Avatar asked Mar 26 '26 23:03

M.Izzat


1 Answers

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"

like image 75
porloscerros Ψ Avatar answered Mar 28 '26 16:03

porloscerros Ψ



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!