【问题标题】:How to get values of checkbox array in Laravel 5?如何在 Laravel 5 中获取复选框数组的值?
【发布时间】:2017-09-09 14:56:49
【问题描述】:

我使用 javascript 在表单中创建了复选框:

<input type="checkbox" name="is_ok[]" />
<input type="checkbox" name="is_ok[]" />
<input type="checkbox" name="is_ok[]" />

当我选中第一个和第三个复选框并提交表单时,Input::get("is_ok") 会返回给我:

['on', 'on']

有没有办法获得['on', null, 'on']['on', 'off', 'on'] 的价值?

提前致谢。

【问题讨论】:

  • 我是否会使用 laravel 集合并将其设置为默认值 0,如果单击则为 1
  • 你需要设置一个值属性。当复选框被选中时,名称/值对将被发送到服务器,否则不会。默认情况下不会发送未选中的值。
  • @apokryfos 当我像&lt;input type="checkbox" name="is_ok[]" value="1" /&gt; 这样添加价值时,我得到["1","1"]。未选中的值无法通过,我不知道哪个复选框未选中。
  • 然后给每个复选框一个不同的值,以便您可以区分。监听表单的提交事件时可能有 jQuery 解决方案,但没有理由增加这种复杂性。
  • @apokryfos 这不是确切的解决方案,但可以接受。谢谢。

标签: php laravel checkbox laravel-5


【解决方案1】:

嘿,为您的应用程序中的 user_id, product_id etc 之类的复选框分配一些值。

例如查看

<input type="checkbox" name="is_ok[]" value="1" />
<input type="checkbox" name="is_ok[]" value="2" />
<input type="checkbox" name="is_ok[]" value="3" />

例如控制器

<?php
    if(isset($_POST['is_ok'])){
        if (is_array($_POST['is_ok'])) {
             foreach($_POST['is_ok'] as $value){
                echo $value;
             }
          } else {
            $value = $_POST['is_ok'];
            echo $value;
       }
   }
?>

您将获得选中复选框的数组。

希望对你有帮助..

【讨论】:

  • 这是不必要的海事组织!
  • 与@apokryfos 建议您的实现相同。至少你会得到必需的复选框
【解决方案2】:

恕我直言,这是最佳做法:

在您的迁移中,将该 db 表字段设置为布尔值和默认值 0

$table->boolean->('is_ok')->default(0);

{!! Form::checkbox('is_ok[]',  false,  isset($model->checkbox) ? : 0) !!}

如果你没有使用 laravel 集体表单,那么你可以使用 vanilla php

 <input type="checkbox" name="is_ok[]" value="<?php isset($model->checkbox) ? : 0; ?>" />

【讨论】:

    【解决方案3】:

    我认为我对此(某种)有一个“好的”解决方案。

    <input type="checkbox" name="is_ok[0]" />
    <input type="checkbox" name="is_ok[1]" />
    <input type="checkbox" name="is_ok[2]" />
    

    (此处为强制索引)

    在请求中:

    $array = \Request::get("is_ok") + array_fill(0,3,0);
    ksort($array);
    

    这将确保 (a) 复选框索引按预期维护。 (b) 收到请求时填补空白。

    这很草率,但可能有用。

    【讨论】:

      【解决方案4】:

      我的解决方案是 laravel 5

      $request->get('is_ok[]');
      

      【讨论】:

        【解决方案5】:

        虽然这可能不是最佳实践,但我首先将特定模型的 id 作为值发送。

        <input type="checkbox" id="verify" name="is_varified[]" value="{{$bank->id}}" {{$bank->is_varified == 1 ? 'checked':''}}>
        

        在控制器中我添加了两个查询来更新字段。

        //handaling the issue of checkbox
        Bank::where("user_id",$user->id)->whereIn('id',$request->is_varified)->update(['is_varified'=> 1]);
        Bank::where("user_id",$user->id)->whereNotIn('id',$request->is_varified)->update(['is_varified'=> 0]);
        

        【讨论】:

          猜你喜欢
          • 2017-05-13
          • 1970-01-01
          • 1970-01-01
          • 2017-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-04
          • 2021-10-07
          相关资源
          最近更新 更多