【问题标题】:How to solve Missing required parameters for [Route: update_pns] [URI: update/{id}]如何解决 [Route: update_pns] [URI: update/{id}] 缺少所需参数
【发布时间】:2020-03-16 21:03:19
【问题描述】:

我想创建更新功能。我创建表单,我在这个表单上显示数据,我创建按钮提交来提交这个数据。但是在我提交后我得到了错误

缺少 [Route: update_pns] [URI: update/{id}] 所需的参数。

它是我的控制器来显示数据

 public function edit_pns($id)
{
    $pns = Data_pns::findOrFail($id);
    if (!$pns)
    abort(404);
    $agama = DB::table('master_agama')->pluck('agama','id');
    $golongan = DB::table('master_golongan')->pluck('golongan','id');
    $jabatan = DB::table('master_jabatan')->pluck('nama_jabatan','id');
    $unit_kerja = DB::table('master_unit_kerja')->pluck('unit_kerja','id');
    $status_pegawai = DB::table('master_status_pegawai')->whereIn('id',[3,4])->pluck('status_pegawai','id');

    //dd($pns);
    return view('admin/edit/edit_pns', ['pns' => $pns ,'golongan'=>$golongan,
    'jabatan'=>$jabatan,'unit_kerja'=>$unit_kerja,'agama'=>$agama,'status_pegawai'=>$status_pegawai]);
}

及其我的控制器来存储数据以更新

 public function update_pns(Request $request,$id)
{

    $pns  = User::find($id);


    $pns->nama                 = $request->input('nama');
    $pns->email                = $request->input('email');
    $pns->alamat               = $request->input('alamat');
    $pns->NIK                  = $request->input('NIK');
    $pns->tempat_lahir         = $request->input('tempat_lahir');
    $pns->tanggal_lahir        = $request->input('tanggal_lahir');
    $pns->pendidikan           = $request->input('pendidikan');
    $pns->nomor                = $request->input('nomor');
    $pns->agama_id             = $request->input('agama_id') ;
    $pns->status_pegawai_id    = $request->input('status_pegawai_id');
    $pns->unit_kerja_id        = $request->input('unit_kerja_id') ;


    dd($pns);
    // $pns->update();
    // return redirect('pns1')->with('success', 'Your info are updated');
}

还有这条路线

Route::get('/edit_pns/{id}', 'AdminController@edit_pns' );
Route::post('/update/{id}', 'AdminController@update_pns')->name('update_pns');

这有什么问题?

更新

<form method="POST" action="{{ route('update_pns') }}" class="form-horizontal form-label-left">
                @csrf

                <span class="section">Lengkapi Form Dibawah ini :</span>

                 <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="nama">NAMA <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                    <input id="nama" type="text" class="form-control @error('nama') is-invalid @enderror" name="nama" value="{{$pns->users->nama}}" required autocomplete="nama">

                        @error('nama')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>



                <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="NIK">NIK <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input id="NIK" type="text" class="form-control @error('NIK') is-invalid @enderror" name="NIK" value="{{$pns->users->NIK}}" required autocomplete="NIK" placeholder="3314********">

                        @error('NIK')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>


                  <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="email">Email <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                        <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{$pns->users->email}}" required autocomplete="email" placeholder="contoh@gmail.com" required>

                        @error('email')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>



                  <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="tempat_lahir">Tempat Lahir <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input id="tempat_lahir" type="text" class="form-control @error('tempat_lahir') is-invalid @enderror" name="tempat_lahir" value="{{$pns->users->tempat_lahir}}" required autocomplete="tempat_lahir">

                        @error('tempat_lahir')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>



                  <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="tanggal_lahir">Tanggal Lahir <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input id="tanggal_lahir" type="date" class="form-control @error('tanggal_lahir') is-invalid @enderror" name="tanggal_lahir" value="{{$pns->users->getOriginal('tanggal_lahir')}}" required autocomplete="tanggal_lahir">

                        @error('tanggal_lahir')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>






                  <div class="item form-group">
                    <label for="jenis_kelamin" class="control-label col-md-3">Jenis Kelamin <span class="required">*</span></label>
                    <div class="col-md-6 col-sm-6 col-xs-12">


                        <td>
                        <label> Laki-Laki<input type="radio"  name="jenis_kelamin" value="L" checked>
                        </label>
                       </td>


                        <td>

                        <label> Perempuan
                          <input type="radio"  name="jenis_kelamin" value="P">
                        </label>
                       </td>



                        @error('jenis_kelamin')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>

                   <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="pendidikan">Pendidikan Terakhir <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                    <input id="pendidikan" type="text" class="form-control @error('pendidikan') is-invalid @enderror" name="pendidikan" value="{{$pns->users->pendidikan}}" required autocomplete="pendidikan">

                        @error('pendidikan')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div>

                  <div class="item form-group">
                    <label class="control-label col-md-3 col-sm-3 col-xs-12" for="nomor">Nomor HP <span class="required">*</span>
                    </label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                      <input id="nomor" type="text" class="form-control @error('nomor') is-invalid @enderror" name="nomor" value="{{$pns->users->nomor}}" required autocomplete="nomor" placeholder="contoh 628572510294">

                        @error('nomor')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                        @enderror
                    </div>
                  </div> 

                  <div class="form-group">
                      <label class="control-label col-md-3 col-sm-3 col-xs-12">Agama <span class="required">*</span></label>
                      <div class="col-md-6 col-sm-9 col-xs-12">
                        <select name="agama_id" id="agama_id" class="form-control">
                          @foreach($agama as $masters => $agamas )
                               <option value="{{ $masters }}" @if ($pns->users->agama_id == $masters ) selected @endif>{{ $agamas }}</option>
                          @endforeach
                      </select>
                      </div>
                    </div>



                    <div class="item form-group">
                      <label class="control-label col-md-3 col-sm-3 col-xs-12" for="alamat">Alamat <span class="required">*</span>
                      </label>
                      <div class="col-md-6 col-sm-6 col-xs-12">
                        <textarea id="alamat" required="required" name="alamat" value="" class="form-control col-md-7 col-xs-12">{{$pns->users->alamat}}</textarea>
                      </div>
                    </div>

                    <div class="form-group">
                      <label class="control-label col-md-3 col-sm-3 col-xs-12">Unit Kerja <span class="required">*</span></label>
                      <div class="col-md-6 col-sm-9 col-xs-12">
                        <select name="unit_kerja_id" id="unit_kerja_id" class="form-control">
                            @foreach($unit_kerja as $units => $unit )
                            <option value="{{ $units }}" @if ($pns->users->unit_kerja_id == $units ) selected @endif>{{ $unit }}</option>
                            @endforeach
                        </select>
                      </div>
                    </div>

                    <div class="form-group">
                      <label class="control-label col-md-3 col-sm-3 col-xs-12">Status Pegawai <span class="required">*</span></label>
                      <div class="col-md-6 col-sm-9 col-xs-12">
                        <select name="status_pegawai_id" id="status_pegawai_id" class="form-control">
                            @foreach($status_pegawai as $status => $pegawai )
                            <option value="{{ $status }}" @if ($pns->users->status_pegawai_id == $status ) selected @endif>{{ $pegawai }}</option>
                            @endforeach
                        </select>
                      </div>
                    </div>

                <div class="form-group">
                  <div class="col-md-6 col-md-offset-3">

                    <button id="send" type="submit" class="btn btn-success">Submit</button>
                  </div>
                </div>
              </form>

【问题讨论】:

标签: laravel


【解决方案1】:

由于您在控制器中使用请求

将您的路线更改为:

Route::post('/update', 'AdminController@update_pns')->name('update_pns');

对于您的控制器,您可以执行此操作。

public function update_pns(Request $request)
{
    $pns  = User::find($request->id);
    ...
}

同时为您的 html 创建一个隐藏输入以获取请求 ID

<input tpye="hidden" value="{{ $id }}" name="id" />

【讨论】:

    【解决方案2】:

    您的路由需要一个参数才能解析,{id},因此您应该使用action 中的route('update_pns') 而不是表单的route('update_pns', $idDesired),而不是$idDesired,您应该写你想在update_pns方法上获取的id为$id

    【讨论】:

    • 好的,它解决了我的第一个问题,但现在我提交这个表格,我有一个 404 Not Found。这是我的错误路线?
    • 当您按下按钮时,您会在浏览器栏上看到哪个链接?
    • 同时删除 bootstrap/cache 中的每个文件,或者只运行 php artisan config:cache
    • @AdhikMulat 也许您已将路线更新为@poldo 的答案,您需要坚持使用任何一种方法。如果您更喜欢@Alberto 的回答,那么您不需要只更新表单中的操作。要确认,您可以检查php artisan route:list并清除路由缓存php artisan route:clear
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2020-03-28
    • 2022-01-16
    • 2019-10-01
    • 2019-11-19
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多