Postingan lainnya
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
7 Jawaban:
Itu sudah buat route dan controllernya masing2? kalau sudah buat coba munculin kodenya. Atau belum dibuat dan agan masih bingung bagaimana konsepnya?
route
Route::get('/delete/{id}', 'CrudController@destroy');
controller
public function destroy($id)
{
$hapus = Crud::find($id);
$hapus->delete();
return Redirect::back();
}
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;'
maksudnya jika dia menghapus dari halaman profil maka otomatis akan kembali ke profil jika dia meghapus dari halaman home maka dia kembali ke home.
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>
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.