我有一个带有表单的页面,该表单用于用户将证书与会议的注册类型相关联。
用户需要在单选按钮中选择一种注册类型,将内容写入textarea输入中,然后单击“保存”。
下面的代码正在工作,但是有问题。每当用户单击注册类型,在文本区域中写入一些内容,然后在registration_types选项卡中单击“保存”时,“ certificate_id”列就会使用创建的证书ID进行更新,这是正确的。但是问题在于,总是在数据库中创建一个新的证书记录,而且似乎不正确,因为用户只是将其与注册类型关联并更新证书。
您知道如何正确处理此上下文吗?
<form id="edit_registration_types" method="post"
action="{{route('certificates.store', ['conference_id' => $conference->id])}}" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-row">
<div class="form-group col">
<label>Certificate</label>
@foreach($registrationType as $rtype)
<div class="form-check">
<input
{{ (old('radiobutton') && old('radiobutton') == $rtype->id) ? 'checked' : '' }}
class="form-check-input radio" type="radio" name="radiobutton"
value="{{ $rtype->id }}" id="{{$rtype->id}}">
<label class="form-check-label" for="exampleRadios1">
Certificate for the registration type "{{$rtype->name}}"
</label>
</div>
@endforeach
</div>
</div>
<div class="form-group">
<label for="exampleFormControlTextarea1">Configure the certificate for the selected registration type</label>
<textarea class="form-control" name="certificate_content" id="" rows="3">{{ old('certificate_content') }}</textarea>
</div>
<button class="btn-outline-primary btn">Save equal for all registration types</button>
<input type="submit" class="btn btn-primary btn" value="Save"/>
</form>
CertificatesController:
class CertificateController extends Controller
{
public function create($id){
$conference = Conference::find($id);
$registrationType = RegistrationType::where('conference_id', $id)->get();
return view('certificates.index')->with('conference', $conference)->with('registrationType', $registrationType);
}
public function store(Request $request){
$this->validate($request, [
'certificate_content' => 'required'
]);
$certificate = Certificate::create([
'content' => $request->certificate_content,
]);
$registrationTypeToUpdate = RegistrationType::find($request->radiobutton);
$registrationTypeToUpdate->certificate_id = $certificate->id;
$registrationTypeToUpdate->save();
Session::flash('success','Certificate updated');
return redirect()->back();
}
}