如何正确处理此上下文以将证书与注册类型相关联?

时间:2018-06-27 14:01:06

标签: php laravel

我有一个带有表单的页面,该表单用于用户将证书与会议的注册类型相关联。

用户需要在单选按钮中选择一种注册类型,将内容写入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();

    }
}

0 个答案:

没有答案