Search code examples
phplaravellaravel-9

Laravel 9 try to update but no error show and not pass to db


I try to make web using laravel 9, when I tried to edit the data, it not showing any error and redirect it to dashboard without show and error and didn't pass the data to db. here is my code for controller

public function edit($id)
    {
        // find bidan_id that login
        $pasien_id = Auth::guard('pasien')->id();

        $pasien = IbuHamil::where('id', $pasien_id)->findOrFail($id);

        return view('pasien.data.edit', compact('pasien_id', 'pasien'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, IbuHamil $pasien)
    {
                // validate request
        $request->validate([
            'name' => 'required|string',
            'nama_suami' => 'string|nullable',
            'alamat' => 'string|nullable',
        ]);

            
        $pasien->update([
            'name' => $request->name,
            'nama_suami' => $request->nama_suami,
            'alamat' => $request->alamat,
        ]);

        return redirect()->route('pasien.dashboard');
    }

and here is my edit.blade.php form. I already tried change the method between put and patch

                                <form action="{{ route('data.update', $pasien->id) }}" method="POST" enctype="multipart/form-data">
                                    @csrf
                                    @method('put')
                                    <div class="col-md-6">
                                        <div class="form-group mb-3">
                                            <label for="">Nama</label>
                                            <input type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ $pasien->name }}" placeholder="Nama Lengkap" required>
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                        <div class="form-group mb-3">
                                            <label for="">Nama Suami</label>
                                            <input type="text" class="form-control @error('nama_suami') is-invalid @enderror" name="nama_suami" value="{{ $pasien->nama_suami }}" placeholder="Nama Suami">
                                            @error('nama_suami')
                                                <div class="alert alert-danger">{{ $message }}</div>
                                            @enderror
                                        </div>
                                    </div>
                                    <div class="col-md-12">
                                        <div class="form-group mb-3">
                                            <label for="">Alamat</label>
                                            <input type="text" class="form-control @error('alamat') is-invalid @enderror" name="alamat" value="{{ $pasien->alamat }}" placeholder="Alamat Lengkap">
                                            @error('alamat')
                                                <div class="alert alert-danger">{{ $message }}</div>
                                            @enderror
                                        </div>
                                    </div>

                                <button class="btn btn-primary" type="sumbit">Simpan</button>
                                </form>

and here is my route

Route::group(['middleware' => ['pasien']], function() {

        // route dashboard
        Route::get('/dashboard', App\Http\Controllers\Pasien\DashboardController::class)->name('pasien.dashboard');
        Route::resource('/data', \App\Http\Controllers\Pasien\DataController::class);

    });

and here is my route:list

  GET|HEAD        pasien/data ......................data.index › Pasien\DataController@index
  POST            pasien/data ......................data.store › Pasien\DataController@store
  GET|HEAD        pasien/data/create ...............data.create › Pasien\DataController@create
  GET|HEAD        pasien/data/{data} ...............show › Pasien\DataController@show
  PUT|PATCH       pasien/data/{data} ...............data.update › Pasien\DataController@update
  DELETE          pasien/data/{data} ...............data.destroy › Pasien\DataController@destroy
  GET|HEAD        pasien/data/{data}/edit ..........data.edit › Pasien\DataController@edit

thank you


Solution

  • According to your route :

    Route::resource('/data',\App\Http\Controllers\Pasien\DataController::class);
    

    If you check your routes php artisan route:list you should see routes like pasien/data/{data}

    You are using $pasien in your controller's update method. Changing it to $data will work.

    Just make sure you use the parameter same as mentioned in Resource route.