M.Izzat
M.Izzat

Reputation: 1166

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

Upvotes: 3

Views: 536

Answers (1)

porloscerros Ψ
porloscerros Ψ

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

Related Questions