如何在 Laravel 中获取选定的双列表框值

How can you get selected dual list box values in Laravel

我的 Laravel 表单中有一个双列表框,我想将那些值移到右侧。目前,只有 1 个值被接管,但如果用户选择 3 个值,我希望所有 3 个值都存储在数据库中。有什么办法吗?

我的控制器:

 public function storesurvey(Request $request)
    {          
        $energy = new Customer();
        $energy->rank1 = $request->input('rank1');
        $energy->comments = $request->input('comments');
        $energy->save();
        return redirect('/survey')->with('success', 'data added');
    }

我的看法:

<div class="container">                
                  <div class="jp-multiselect">
                      <div class="from-panel">
                          <select name="from[]" class="form-control" size="8" multiple="multiple">
                              <option value="1">Item 1</option>
                              <option value="2">Item 2</option>
                              <option value="3">Item 3</option>
                              <option value="4">Item 4</option>
                              <option value="5">Item 5</option>
                          </select>
                      </div>
                      <div class="move-panel">
                          <button type="button" class="btn-move-all-right btn-primary"></button>
                          <button type="button" class="btn-move-selected-right"></button>
                          <button type="button" class="btn-move-all-left"></button>
                          <button type="button" class="btn-move-selected-left"></button>
                      </div>
                      <div class="to-panel">
                          <select name="rank1" class="form-control" size="8" multiple="multiple">
                           
                          </select>
                      </div>
                      
                  </div>
                  <script>
                      $(".jp-multiselect").jQueryMultiSelection();
                  </script>
                  <hr />
                  <!-- 2 -->                
              </div>

有人可以解释为什么只有一个值被接管以及我如何发送右侧存在的所有值。

要从 select 输入(或具有相同名称的复选框)发送多个值,您需要使用 [] 命名输入,就像您在 select form[]

<select name="rank1[]" class="form-control" size="8" multiple="multiple">

然后在你的控制器中,你需要把它当作一个数组。

这里我使用了 json incode 将所有 rank1 值转换为格式为 json.

的单个值字符串
public function storesurvey(Request $request)
    {          
        $energy = new Customer();
        $energy->rank1 = json_encode($request->input('rank1'));
        $energy->comments = $request->input('comments');
        $energy->save();
        return redirect('/survey')->with('success', 'data added');
    }

其他解决方案

您也可以使用 Casting 制作此自动装置

-Customer.php

class Customer .....
{
    protected $casts = [
        'rank1' => 'array'
    ];
    ....
}

然后在你的controller中,你可以直接给属性赋值一个数组rank1而不用转换

public function storesurvey(Request $request)
{          
    $energy = new Customer();
    $energy->rank1 = $request->input('rank1');
    $energy->comments = $request->input('comments');
    $energy->save();
    return redirect('/survey')->with('success', 'data added');
}