Laravel 5.1,通过选中的复选框更新多个值

时间:2019-04-22 14:04:28

标签: laravel laravel-blade

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

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

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

使用网址:http://myapp/someroute/2246/edit,其中2246是一些id

在该修改中,我可以更新4个字段。这些字段之一称为“我的状态”,并且可以具有值123

现在,我必须做一个多选编辑功能,在这里我可以检查需要同时更新的表的每一行(每行都有name=someid),然后单击一个称为“验证”的按钮,并仅更新1个传送字段,即my state字段,并且新值将始终为1(在图片中,值是字符串,但仅用于视图)。

enter image description here

问题是:如何为视图中选择的每个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

2 个答案:

答案 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