Tahun baru, skill baru! 🚀. Masukkan kupon "skill2025" untuk diskon 30% di kelas apa saja

Delete dan Redirect back di laravel

ketika kita hapus di home.php maka di lempar ke delete.php setelah sukses kembali ke home.php lalu ketika kita hapus di profil.php maka di lempar ke delete.php setelah sukses kembali ke home.php

itu bagaimana ya di controllernya? sy gunain ini tapi malah error

 return Redirect::back();

Object not found!

The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404

avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Diperbarui 8 tahun yang lalu

7 Jawaban:

Itu sudah buat route dan controllernya masing2? kalau sudah buat coba munculin kodenya. Atau belum dibuat dan agan masih bingung bagaimana konsepnya?

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 8 tahun yang lalu

route

 Route::get('/delete/{id}', 'CrudController@destroy');

controller

 public function destroy($id)
    {
      $hapus = Crud::find($id);
        $hapus->delete();
        return Redirect::back();
    }
avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Dipost 8 tahun yang lalu

Yang saya pahami dari pertanyaannya, setelah delete user mau diredirect ke home. Karena tujuan redirect yg agan sebutkan hanya ke home maka cukup ganti jadi

// sesuaikan url didalam tanda petik
return redirect('/');

Kalau agan return Redirect::back() maka otomatis url yang akan dijadikan tujuan adalah PREVIOUS URL. Nah masalahnya karena methodnya get, bagaimana ketika user langsung mengakses url tersebut? Itu berarti tidak akan ada previous url akibatnya user akan diredirect ke url tersebut berulang2 hingga menghasilkan error.

Kalau yg agan maksud adalah redirect ke url sebelumnya (yaitu url sebelum melakukan action delete), maka agan perlu setting Route::get ubah jadi post atau destroy, dan pastinya sesuaikan juga di form. Ini dilakukan untuk menghindari error yg saya sebutkan di atas. Kemudian tangkap previous url dan lakukan redirect.

// tambahkan ini di bagian atas class controller pilih salah satu
use Session;
use URL;

// tambahkan kode berikut di method controller dan lihat apa hasilnya, silahkan dipahami
// ini metode2 dapatkan previous url
dd(Session::get('_previous')['url']);
dd(URL::previous());

// agan sisa tambahkan previous url yg didapatkan tersebut dan masukkan ke return redirect('/')

// metode lainnya:
return back();
return redirect()->back();
return Redirect::back(); => // kalau mau gunakan ini maka import dibagian atas class controllernya 'use Redirect;'

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 8 tahun yang lalu

maksudnya jika dia menghapus dari halaman profil maka otomatis akan kembali ke profil jika dia meghapus dari halaman home maka dia kembali ke home.

avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Dipost 8 tahun yang lalu

misal ketika dia berada di halaman profil maka ketika dia klik button delete, otomatis akan menghapus artikel yg dia klik delete lalu setelah itu kembali ke halaman profil

kan saya menggunakan url untuk menghus jadi mesti membuat jadi methode get donk?

 <a href="{{ url('delete',$data->id) }}" onclick="return confirm('Apakah anda yakin?')">delete</i></a>
avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Dipost 8 tahun yang lalu

Saya kasi contoh dan coba pahami kasus atau error mengenai redirect back ini dan route get: 1. Buat Route tes dengan method get.

Route::get('/hapus/artikel', function() {
  // angaplah kita telah melakukan delete dan ingin redirect
  return redirect()->back();
});

coba agan tes akses url tersebut, agan akan diredirect terus menerus tanpa henti. Karena apa? return redirect()->back() tidak mengenali previous url. Maknya di atas sy kasi option untk dapatkan previous url, kalau valuenya ada ya bisa di redirect()->back() tapi kalau tidak ada previous urlnya ya harus tentukan return redirectnya mau ke mana. Atau option lain ganti method get dengan post atau destroy agar user tidak bisa langsung akses url tersebut di browser.

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 8 tahun yang lalu

owh ok ok

avatar Nandar
@Nandar

648 Kontribusi 204 Poin

Dipost 8 tahun yang lalu

Login untuk ikut Jawaban