首页 > 解决方案 > 将检查从复选框传递到控制器

问题描述

感谢您花时间查看我的问题。我有一种情况是我想获取复选框“已检查”状态并将相应的值/ID返回给控制器。

想法是将输入字段的值添加到如下图所示的点:

图片

您可能已经发现,我想给 Maverick 和 Sidney 教授加 200 分(虚拟数据)

这应该在我单击添加点按钮时发生。

我设法将输入值传递给控制器​​:

home.blade.php 的一小部分

<form action="/addpoints" method="post">
        @csrf
        <div class="field has-addons">
          <div class="control has-icons-left">

            <input class="input" type="tel" placeholder="" id="pointsInput" name="pointsInput">
            <span class="icon is-small is-left">
            <i class="fas fa-coins"></i>
          </span>
          </div>
          <div class="control">
            <button class="button is-info" id="addPoints">Add Points</button>

            </a>
          </div>
        </div>
      </form>

(如果类名看起来不熟悉,那是因为我使用的是 Bulma CSS。)

这是我尝试过的:

家庭控制器.php

public function addPoints(Request $request)
    {
        $member = new Member; <-- Member model contains a points fillable

        $checked = $request->addPoints;
        $points = $request->pointsInput; <-- this returns the correct data

        return redirect('/home');
    }

网页.php

Route::get('/home', 'HomeController@index');
Route::post('/home', 'HomeController@store');
Route::post('/addpoints', 'HomeController@addPoints')->name('addpoints');
Route::get('/home/{id}', 'HomeController@edit');
Route::patch('/home/{id}', 'HomeController@update');
Route::delete('/home/{id}', 'HomeController@destroy');
Route::get('/home/search', 'HomeController@search')->name('home.search');

包含复选框的表格的第一部分:

<tr>
  <td><input type="checkbox" value="{{ $member->id }}" name="addPoints"></td>
  <td>{{ $member->name }}</td>
  <td>{{ $member->email }}</td>
  <td>{{ $member->size }}</td>
  <td>{{ $member->points }}</td>

预先感谢您查看此内容。任何帮助表示赞赏!

标签: javascriptphpjquerylaravel

解决方案


您应该在上方表单的隐藏字段中跟踪这些复选框的值。您可以简单地获取所有选中的复选框并将它们的唯一标识符与 jQuery 或您正在使用的任何内容连接起来。

$('#my-form').on('submit', function (e) {
    e.preventDefault();

    var checked = [];

    $('.my-checkbox').each(function() {
        let checkboxId = $(this).data('id');

        checked.push(checkboxId);
    });

    $('#my-hidden-field').val(checked);

    $(this).submit();
});

这样做之后,您可以简单地获取隐藏字段的值并在 PHP 端使用它。


推荐阅读