如何在laravel中将选择列表的整数值传递给控制器​​?

时间:2018-10-15 17:28:21

标签: controller php-7.2 laravel-5.7

我想将选择列表的值从视图传递到控制器。值是course_id。当我将dd(request->all())放在控制器中时,course_id是一个字符串。在控制器中,我将其强制转换为整数,并分配给模型对象,但始终在{{1的course_id字段中插入零}}表。 这是我的看法:

media

这是商店控制器:

<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">

这是创建控制器:

 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();
}

1 个答案:

答案 0 :(得分:1)

如果您使用

/* stream: MediaStream, type:trackType('audio'/'video') */
toggleTrack(stream,type) {
    stream.getTracks().forEach((track) => {
        if (track.kind === type) {
            track.enabled = !track.enabled;
        }
    });
}

在您的HTML中,您将获得

select name="$courses"

在您的"$courses" => null, // or 1, 2 etc. 变量中;这将很难访问。使用

$request

然后在您的控制器中以select name="courses" <!-- Without the $ --> 的身份访问。

注意:由于PHP处理类型的方式,您不必必须转换为$request->courses,但可能不会受到伤害。