maryam
maryam

Reputation: 1505

How to pass an integer value of select list to controller in laravel?

I want to pass value of select list from view to my controller.The value is course_id. When I put dd(request->all()) in my controller, course_id is an string.In controller I cast it to integer and I assign to model object but always zero is inserted in course_id field of media table. this is my view:

<form action="../media" method="post" enctype="multipart/form-data">
{{csrf_field()}}
title: <input type="text" name="title">
<br> <br>
type:
<input type="radio" name="type" value="voice" checked>Voice<br>
<input type="radio" name="type" value="video">Video<br>
<br> <br>
link: <input type="file" name="link">
<br><br>
course:
<select name="$courses" >
    @foreach($courses as $course)
        <option value="{{$course->id}}">
            {{$course->title}}
        </option>
    @endforeach
</select>
<br><br>
<input type="submit">

this is store controller:

 public function store(Request $request)
{
    //dd($request->all());
    $media=new Media();
    $media->title=$request->title;
    $media->type=$request->type;
    $media->course_id=(int)($request->courses);
    $media->save();
    $format=$request->file('link')->getClientOriginalExtension();
    $size=$request->file('link')->getSize();
    $name=$request->type.'-'.$media->id.'.'.$format;
    $request->file('link')->move(public_path('medias'),$name);
    $media->link= $name;
    $media->format=$format;
    $media->size=$size;
    $media->save();
    return back();
}

And this is create controller:

 public function create()
{
    $courses=Course::all();
    return view('Admin.Media.create',compact('courses'));
}

Upvotes: 1

Views: 2025

Answers (1)

Tim Lewis
Tim Lewis

Reputation: 29288

If you use

select name="$courses"

in your HTML, you're gonna get

"$courses" => null, // or 1, 2 etc. 

in your $request variable; which is going to be difficult to access. Use

select name="courses" <!-- Without the $ -->

And access as $request->courses in your Controller.

Note: You shouldn't have to cast to int due to the way PHP handles types, but likely doesn't hurt.

Upvotes: 1

Related Questions