繁体   English   中英

Laravel - 多选并保存到数据库

[英]Laravel - multiple selection and saving to database

我有这个用于汽车帖子的小项目。 我发布了我的帖子,所以一切正常,但现在我需要有多个选择。 所以这是我的PostsController

...
/**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'title' => 'required',
            'brand' => 'required',
            'model' => 'required',
            'age' => 'required',
            'cc' => 'required',
            'hp' => 'required',
            'body' => 'required',
            'fuel' => 'required',
            'safety' => 'required'
        ]);


        $post = new Post;
        $post->title = $request->input('title');
        $post->brand = $request->input('brand');
        $post->model = $request->input('model');
        $post->age = $request->input('age');
        $post->cc = $request->input('cc');
        $post->hp = $request->input('hp');
        $post->body = $request->input('body');
        $post->fuel = $request->input('fuel');
        $post->safety = $request->input('safety');
        $post->save();

        return redirect('/home')->with('success', 'Your post is posted!');
    }
...

现在这是我的createpost.blade.php

...
<div class="column">
<label for="safety">Safety:</label></br>
 <select class="form-control" name="safety">
   <option value="" disabled selected>Select your option</option>
   <option value="diesel">ABS</option>
   <option value="gasoline">ESP</option>
   <option value="electric">CHILD LOCK</option>
   <option value="electric">AirBAG</option>
 </select>
</div>
...

我怎样才能使这个选择输入用于多项选择,并且所有选择都需要保存到我的数据库中? 我有我的Post.php模型:

...
class Post extends Model
{
    protected $table = 'posts';

    protected $primaryKey = 'id';
}

如果有人对此有解决方案,请帮忙? 或一些教程或任何类似的帮助!

尝试一些多选库

Select2就是其中之一

在您的blade.php 文件中使用数组并使用多个

<select class="form-control" name="safety[]" multiple>

在控制器中

$post->safety = implode(',', $request->input('safety'));

您可以在blade文件中使用checkbox

 $("input:checkbox").click(function(e){ console.log(e.target.checked ? e.target.value : e.target.value+' is unchecked') });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div> <label for="safety">Safety:</label></br> <input type="checkbox" value="ABS" name="safety[]" />ABS <input type="checkbox" value="ESP" name="safety[]" />ESP <input type="checkbox" value="CHILD LOCK" name="safety[]" />CHILD LOCK <input type="checkbox" value="AirBAG" name="safety[]" />AirBAG </div>

并从控制器中的$request检索您的数据,如下所示:

$request->input('safety') // return an array with all checked value, e.g: ['ABS','ESP'] 

在选择标签中添加多个属性

改变

<select class="form-control" name="safety[]">

<select class="form-control" name="safety[]" multiple>

这将让您选择多个选项。 用户必须使用 control/cmd 键来选择多个选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM