首页 > 解决方案 > Laravel 中的复选框

问题描述

I need to create a checkbox, which when selected my user is considered as ACTIVE, and when this checkbox is not selected the user is considered as INACTIVE There's a column in my database called (is_active), and it's tinyInteger, defaults to 1, but如果我单击该复选框,它必须变为 0

我需要用一个复选框来做到这一点,我的代码是这样的

<form action="/is_active/save" method="post" class="lg:text-left">
@csrf
   <div class="mb-3">
     <div class="p-6 card bordered">
         <div class="form-control">
              <input type="checkbox" name="is_active">
              <label>Active</label><br/><br/>
         </div>
     </div>
   </div>
   <button type="submit"
    class="inline-flex mt-1 justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
    Save
   </button>
</form> 

我的表格被定向到

Route::post('/is_active/save', function () {
    $userId = auth()->user()->id;

    $is_active = request('is_active');
    
    $userId->is_active = $is_active;
    $userId->save();

    return redirect("people");

})->middleware(['auth']);

今天这是我保存表格后的结果

尝试在 int 上分配属性“is_active”

如何让我的复选框将值 1 更改为 0?有人可以帮助我吗?谢谢!

标签: phplaravel

解决方案


将复选框的默认值设置为 0:

<input type="checkbox" name="is_active" value="0">

接下来,在后端处理这个值:

$isActive = $request->input('is_active', 1);

这将导致0如果它被检查,或者1(第二个参数充当后备)如果你不检查它。

最后,正确分配它:

routes/web.php

<?php

use Illuminate\Http\Request;

Route::post('/is_active/save', function (Request $request) {
  $user = auth()->user();
  $user->is_active = $request->input('is_active', 1);
  $user->save();

  return redirect('people');
})->middleware(['auth']);

使用此代码,如果您不选中复选框,用户的is_active值将设置为1. 如果您检查它,该值将设置为0


推荐阅读