在Laravel 5.1中,我需要从复选框中更新多个值。
我可以通过单击每个注册表的编辑按钮从表中编辑一些注册表,然后该按钮将我发送到edit
视图
随着网址:http://myapp/someroute/2246/edit
2246是一些id
。
在编辑内部,我可以更新4个字段。其中一个字段称为“我的状态”,可以使用值1
,2
或3
。
现在,我必须创建一个多选编辑功能,在那里我可以检查我需要同时更新的表的每一行(每个都有name=someid
),然后单击一个名为“Validate”的按钮,并仅更新evey行1字段,my state
字段,新值将始终为1
(在图片中值为字符串,但仅适用于视图)。
问题是:我如何为视图中选择的每个id调用方法update
?每个输入复选框都有自己的name
,这是我要更新的注册表的id。
update
方法只是从视图中验证一些值,然后调用一些myedit
method,但在这种情况下,我将跳update
并直接转到myedit
,这有点像:
public function myedit(Request $request, $id) {
$obj = Self::findOrFail($id);
$obj->fk_id_comuna = $req['fk_id_comuna'];
$obj->fk_id_user = $usuario_id;
$obj->date = \Carbon\Carbon::now();
$obj->fk_id_my_state = $estado; //THIS IS THE ONLY FIELD THAT I WILL EDIT, ALWAYS WITH THE SAME VALUE `1`
$obj->save();
我正在尝试为form
按钮制作一个Validate
,但我不知道如何在edit
方法的一次调用中处理多个id。
<form action="{!! route('myroute.update', ['id' => [HERE, HOW CAN I PASS MULTIPLE ID FROM THE CHECKED CHECKBOX] ]) !!}" method="POST">
<input type="submit" class="btn btn-primary pull-right" value="Validar" />
</form>
我正在考虑一个javascript函数,它收集一个数组中每个选中的复选框名称并直接调用myedit
方法,没有视图的form
,可能是?
关于将多个值作为一个Request
值传递。
假设你有这样的形式:
<form method="post">
<input type="checkbox" name="options[]" value="foo"/>foo<br/>
<input type="checkbox" name="options[]" value="bar"/>bar<br/>
<input type="checkbox" name="options[]" value="buz"/>buz<br/>
<input type="submit" value="Submit" />
</form>
你的request('options')
将是一个阵列:["foo", "bar", "buz"]
。
你可以使用foreach迭代options
。
在您的update
方法中,您可以使用:
foreach ($option as request('options')) {
//put your previous code here, so it'd be applied for every option
}
在JS我这样做:
var optionsChecked = [];
$('.options:checkbox:checked').each( function(){
optionsChecked .push($(this).val());
});
然后在ajax:
$.ajax({
type: 'POST',
data: {'id': optionsChecked },
etc
然后在PHP中:
$all = $request->input('id');
foreach ($all as $id){
//whole obj->* = *;
$obj->save();
}