【问题标题】:how to save checkbox with multiple value in laravel 5.5如何在laravel 5.5中保存具有多个值的复选框
【发布时间】:2017-12-25 05:19:37
【问题描述】:

我在使用复选框保存多个项目时遇到困难,使用此代码我一次只能保存一个值..谁能给我想法

控制器:

$crud = explode(',', $request->crud_selected);
    if (count($crud) > 0) {
     foreach ($crud as $x) {
        $slug = strtolower($x) . '-' . strtolower($request->resource);
        $display_name = ucwords($x . " " . $request->resource);
        $description = "Allows a user to " . strtoupper($x) . ' a ' . ucwords($request->resource);

        $permission = new Permission();
        $permission->name = $slug;
        $permission->display_name = $display_name;
        $permission->description = $description;
        $permission->save();
      }
      Session::flash('success', 'Permissions were all successfully added');
      return redirect()->route('permissions.index');
    }
  } else {
    return redirect()->route('permissions.create')->withInput();
  }

视图刀片:

<script>
 var app = new Vue({
      el: '#app',
      data() {
      return:{
       permissionType: 'basic',
        resource: '',
        crudSelected: []
      }
    }  
    });
   
</script>
<div class="from-group" v-if="permissionType == 'crud'">
                <div class="checkbox-group" v-model="crudSelected">
                
                <label class="checkbox-inline"><input type="checkbox" name="crud_selected" value="create">Create</label>
                <label class="checkbox-inline"><input type="checkbox" name="crud_selected" value="read">Read</label>
                <label class="checkbox-inline"><input type="checkbox" name="crud_selected" value="message">Update</label>
                <label class="checkbox-inline"><input type="checkbox" name="crud_selected" value="message">Delete</label>
                </div>
                </div>

知道如何解决这个问题。

【问题讨论】:

    标签: php laravel vue.js


    【解决方案1】:

    我已经设法找到答案,这就是我要更改控制器代码的原因。

    $crud = explode(',', $request-&gt;crud_selected);

    新的

     $crud = $request->input('crud_selected');
    

    然后在我的视图刀片上我将它添加到我的

    name="crud_selected[]
    

    哇,它有效..

    【讨论】:

      【解决方案2】:

      如果你想在复选框输入上获取超过选中的值,我认为你可以通过定义一个函数来调用复选框上的每个更改事件,例如这样

      <label class="checkbox-inline"><input type="checkbox" id ="checklval" name="crud_selected" v-model="crudSelected" v-on:change="trackcheck(Create)" :value="Create" >Create</label>
      

      然后在你的 vue 组件脚本上你将实现这个功能, 我定义了一个名为 ValArray 的数组,它将在复选框上选择每个值,如果该值未在复选框上选中,也会从其中弹出,如下所示:

      trackcheck($labid) {
              if(document.getElementById('checklval').checked==true){
                  this.ValArray.push($labid)
              } else if(document.getElementById('checklval' ).checked==false){
                  this.ValArray.pop($labid)
              }
          }
      

      现在您将拥有一个数组,其中包含复选框输入上的每个选定值, 希望对你有帮助

      【讨论】:

        【解决方案3】:

        您不需要爆炸值,因为复选框值返回数组。 v-model 仅用于输入。

        Form Input Bindings

        <div class="from-group" v-if="permissionType == 'crud'">
               <div class="checkbox-group" >
                    
                    <label class="checkbox-inline"><input type="checkbox" v-model="crudSelected">Create</label>
                    <label class="checkbox-inline"><input type="checkbox" v-model="crudSelected">Read</label>
                    <label class="checkbox-inline"><input type="checkbox" v-model="crudSelected">Update</label>
                    <label class="checkbox-inline"><input type="checkbox" v-model="crudSelected">Delete</label>
               </div>
        </div>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-10
          • 1970-01-01
          • 1970-01-01
          • 2018-02-20
          • 2018-07-04
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多