Laravel-如何切换复选框并更新数据库中的字段

时间:2019-12-29 14:20:27

标签: jquery laravel

当前,我正在Laravel-5.8中开发一个Web应用程序。在项目中,我需要使用复选框设置当前评估。复选框字段为is_current,并且为tinyint(布尔值)。

默认情况下,它是零(0)。如果从视图中将复选框选中为current,则在数据库中应将该特定行的is_current字段设置为1。然后,数据库中的所有其他is_current都应设置为零(0)。并将其保存在数据库中。

控制器

public function create()
{
    abort_unless(\Gate::allows('appraisal_identity_create'), 403);
    return view('appraisal.appraisal_identities.create');
}

public function store(StoreAppraisalIdentityRequest $request)
{   
    $identity = AppraisalIdentity::create([
        'appraisal_name' => $request->appraisal_name,
        'is_current'     => $request->is_current,
    ]);
    Session::flash('success', 'Appraisal is created successfully');
    return redirect()->route('appraisal.appraisal_identities.index');
}

查看

<form  action="{{route('appraisal.appraisal_identities.store')}}" method="post" class="form-horizontal" enctype="multipart/form-data">
    {{csrf_field()}}
    <div class="form-body">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group row">
                     <label class="control-label text-right col-md-3">Is Current Appraisal?</label>
                      <div class="col-md-9">
                          <input type="checkbox" class="form-control"  name="is_current" value="{{old('is_current')}}">
                      </div>
                  </div>
              </div>
          </div>
      </div>
      <div>
          <!--<input class="btn btn-primary" type="submit" value="{{ trans('global.save') }}">-->
          &nbsp;&nbsp;&nbsp;<button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
          <button type="button" onclick="window.location.href='{{route('appraisal.appraisal_identities.index')}}'" class="btn btn-default">Cancel</button>
      </div>
</form>

如何调整控制器和视图以实现此目的?

谢谢。

1 个答案:

答案 0 :(得分:0)

在您的控制器中,尝试通过以下方式获取复选框的值:

'is_current' => (bool) $request->get('is_current', false);   

(bool)将复选框的值解析为true(如果已选中)。
如果未选中,将返回null,但将其解析为false,Laravel将其插入为tinyInt 1(真)或0(假)。

您还可以检查AppraisalIdentity模型中的字段is_current是否声明为可填充。

注意:仅当您使用提交按钮(视图中带有注释的提交按钮)提交表单时,此方法才有效。

如果要使用jQuery设置值,则必须使用Ajax,创建一个新路由,并且表中的行必须存在。