【问题标题】:How to pass an integer value of select list to controller in laravel?如何将选择列表的整数值传递给laravel中的控制器?
【发布时间】:2018-10-15 17:28:20
【问题描述】:

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

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

这是创建控制器:

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

【问题讨论】:

  • 检查你渲染的 HTML;我不确定name="$courses" 会渲染成什么,但乍一看我不认为它会是course_id。另外,您说 “在我的控制器中, course_id 是一个字符串。在控制器中,我将其转换为整数 [...]” 但您实际上是在转换 $request-&gt;courses 而不是 $request-&gt;course_id;你必须做一些更彻底的调试。
  • course_id 的名称是 html 视图中的课程,我在 select 标签中提到了它。即使我在我的视图中收到选择列表中的所有课程表。我只是不能将字符串转换为整数。

标签: controller php-7.2 laravel-5.7


【解决方案1】:

如果你使用

select name="$courses"

在你的 HTML 中,你会得到 ​​p>

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

在您的 $request 变量中;这将很难访问。使用

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

并在您的控制器中以$request-&gt;courses 的身份访问。

注意:由于 PHP 处理类型的方式,您不应该必须强制转换为 int,但可能不会受到影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多