Как правильно обработать этот контекст, чтобы связать сертификаты с типами регистрации? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть страница с формой для привязки пользователя сертификатов с типами регистрации конференции.

Пользователь должен выбрать тип регистрации в радиокнопке, записать содержимое в поле ввода 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();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...