我在使用复选框保存多个项目时遇到困难,使用此代码我一次只能保存一个值。任何人都可以给我一个想法
控制器:
$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>
&#13;
<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>
&#13;
任何想法如何解决这个问题。
答案 0 :(得分:1)
我已经设法找到答案,这是我如何更改控制器代码。
<强>旧强>
$crud = explode(',', $request->crud_selected);
新
$crud = $request->input('crud_selected');
然后在我的视图刀片上,我将其添加到我的
name="crud_selected[]
Wallahh有效..
答案 1 :(得分:0)
您不需要爆炸值,因为复选框值返回数组。 v-model仅用于输入。
<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>
答案 2 :(得分:0)
如果你想在复选框输入上取得超过选中的值,我认为你可以通过定义一个函数来调用复选框上的每个更改事件,例如像这样
<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)
}
}
现在,您将拥有一个数组,其中包含复选框输入中的每个选定值, 希望这能帮到你