У меня есть страница с формой для привязки пользователя сертификатов с типами регистрации конференции.
Пользователь должен выбрать тип регистрации в радиокнопке, записать содержимое в поле ввода textarea и затем нажать «Сохранить».
Код ниже работает, но есть проблема. Каждый раз, когда пользователь щелкает по типу регистрации, записывает некоторый контент в текстовую область и нажимает кнопку «Сохранить» на вкладке registration_types, столбец «certificate_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();
}
}