Laravel 5.1,从复选框中更新多个值

问题描述 投票:0回答:2

在Laravel 5.1中,我需要从复选框中更新多个值。

我可以通过单击每个注册表的编辑按钮从表中编辑一些注册表,然后该按钮将我发送到edit视图

(这是单个注册表的编辑视图)enter image description here

随着网址:http://myapp/someroute/2246/edit 2246是一些id

在编辑内部,我可以更新4个字段。其中一个字段称为“我的状态”,可以使用值123

现在,我必须创建一个多选编辑功能,在那里我可以检查我需要同时更新的表的每一行(每个都有name=someid),然后单击一个名为“Validate”的按钮,并仅更新evey行1字段,my state字段,新值将始终为1(在图片中值为字符串,但仅适用于视图)。

enter image description here

问题是:我如何为视图中选择的每个id调用方法update?每个输入复选框都有自己的name,这是我要更新的注册表的id。

update方法只是从视图中验证一些值,然后调用一些myeditmethod,但在这种情况下,我将跳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,可能是?

laravel laravel-blade
2个回答
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
投票

在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();
}
© www.soinside.com 2019 - 2024. All rights reserved.