当前,我正在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') }}">-->
<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>
如何调整控制器和视图以实现此目的?
谢谢。
答案 0 :(得分:0)
在您的控制器中,尝试通过以下方式获取复选框的值:
'is_current' => (bool) $request->get('is_current', false);
(bool)
将复选框的值解析为true
(如果已选中)。
如果未选中,将返回null
,但将其解析为false
,Laravel将其插入为tinyInt
1(真)或0(假)。
您还可以检查AppraisalIdentity
模型中的字段is_current
是否声明为可填充。
注意:仅当您使用提交按钮(视图中带有注释的提交按钮)提交表单时,此方法才有效。
如果要使用jQuery设置值,则必须使用Ajax,创建一个新路由,并且表中的行必须存在。