Sapnesh Naik
Sapnesh Naik

Reputation: 11656

Select multiple passes only the last selected value in request

I have a select2 field like which accepts multiple attribute:

<div class="col-lg-5 m-input--solid">
    <select class="form-control m-select2 m-input--solid" id="m_select2_3" name="collegeCourses" multiple>
        @foreach($courseCategories as $courseCategory)
        <optgroup label="{{$courseCategory}}">
            @foreach($courseNames->$courseCategory as $courseName)
            <option value="{{$courseName}}" >
                {{$courseName}}
            </option>
            @endforeach
        </optgroup>
        @endforeach
    </select>
</div>

Note that I have specified multiple in my select form.

example input: enter image description here

But the $request has only the last selected value!! enter image description here

also manually checking also displays that $request has only last value

$input = Input::all();
$roles = $input["collegeCourses"];
echo $roles; //output: Mrs. Eldora Blick

What is going wrong here?

Upvotes: 0

Views: 458

Answers (3)

Maaz
Maaz

Reputation: 67

use square brackets with name attribute

name="collegeCourses[]"

Upvotes: 0

Mayank Pandeyz
Mayank Pandeyz

Reputation: 26278

The issue is here:

<select class="form-control m-select2 m-input--solid" id="m_select2_3" name="collegeCourses" multiple>

you have to pass the name se an array like:

collegeCourses[]

so that it can accept multiple selected values. And you can get these values by using foreach() loop like:

foreach($collegeCourses as $course)
{
  // do what you want here
}

Upvotes: 4

Mike Doe
Mike Doe

Reputation: 17624

Simply add [] to the name of the element so it becomes collegeCourses[] instead and can be treated as array.

Upvotes: 0

Related Questions