在Laravel 5.1中,我需要从选中的复选框更新多个值。
我可以通过单击每个注册表的“编辑”按钮来编辑表中的某些注册表,然后该按钮将我发送到edit
视图
使用网址:http://myapp/someroute/2246/edit
,其中2246是一些id
。
在该修改中,我可以更新4个字段。这些字段之一称为“我的状态”,并且可以具有值1
,2
或3
。
现在,我必须做一个多选编辑功能,在这里我可以检查需要同时更新的表的每一行(每行都有name=someid
),然后单击一个称为“验证”的按钮,并仅更新1个传送字段,即my state
字段,并且新值将始终为1
(在图片中,值是字符串,但仅用于视图)。
问题是:如何为视图中选择的每个ID调用方法update
?每个输入复选框都有自己的name
,这是我将更新的注册表的ID 。
update
方法只是从视图中验证一些值,然后调用某些myedit
方法,但是在这种情况下,我将跳过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
?
答案 0 :(得分:1)
关于将多个值作为一个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
}
答案 1 :(得分:1)
在JS中,我这样做是
User = [
{
"name": "sumon",
"Order" :[
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
},
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
},
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
}
]
},
{
"name": "karim",
"Order" :[
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
},
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
},
{
"start_date":2019-04-22 23:08:39.927
"end_date":2019-04-23 02:08:39.927
}
]
}
]
然后用ajax:
var optionsChecked = [];
$('.options:checkbox:checked').each( function(){
optionsChecked .push($(this).val());
});
然后在PHP中:
$.ajax({
type: 'POST',
data: {'id': optionsChecked },
etc