Saya membaca dokumen di situs web Laravel, Stack Overflow, dan Google tetapi masih tidak memahami perbedaan antara Route::resource
dan Route::controller
.
Salah satu jawaban mengatakan Route :: resource adalah untuk crud. Akan tetapi, dengan Route :: controller kita dapat melakukan hal yang sama seperti Route :: resource dan kita hanya dapat menentukan tindakan yang diperlukan.
Mereka tampak seperti saudara kandung:
Route::controller('post','PostController');
Route::resource('post','PostController');
Bagaimana kita bisa memilih apa yang akan digunakan? Apakah praktik yang baik itu?
Jawaban:
Pengontrol Sumber Daya RESTful
Sebuah tenang pengontrol sumber daya set up beberapa rute default untuk Anda dan bahkan nama-nama mereka.
Route::resource('users', 'UsersController');
Memberi Anda rute bernama ini:
Dan Anda akan mengatur pengontrol Anda seperti ini (tindakan = metode)
class UsersController extends BaseController { public function index() {} public function show($id) {} public function store() {} }
Anda juga dapat memilih tindakan apa yang disertakan atau dikecualikan seperti ini:
Route::resource('users', 'UsersController', [ 'only' => ['index', 'show'] ]); Route::resource('monkeys', 'MonkeysController', [ 'except' => ['edit', 'create'] ]);
Dokumentasi RESTful Resource Controller
Pengontrol implisit
Sebuah kontroler implisit lebih fleksibel. Anda akan dialihkan ke metode pengontrol Anda berdasarkan jenis dan nama permintaan HTTP. Namun, Anda tidak memiliki nama rute yang ditentukan untuk Anda dan itu akan menangkap semua subfolder untuk rute yang sama.
Route::controller('users', 'UserController');
Akan mengarahkan Anda untuk menyiapkan pengontrol dengan semacam skema penamaan RESTful:
class UserController extends BaseController { public function getIndex() { // GET request to index } public function getShow($id) { // get request to 'users/show/{id}' } public function postStore() { // POST request to 'users/store' } }
Dokumentasi Pengontrol Implisit
Ini adalah praktik yang baik untuk menggunakan apa yang Anda butuhkan, sesuai preferensi Anda. Saya pribadi tidak menyukai pengontrol implisit , karena dapat berantakan, tidak memberikan nama, dan dapat membingungkan saat digunakan
php artisan routes
. Saya biasanya menggunakan pengontrol RESTful Resource dalam kombinasi dengan rute eksplisit.sumber
resource.edit
menampilkan tampilan edit, pada dasarnya, formulir untuk mengedit sumber daya yang ada.resource.edit
danresource.create
biasanya untuk UI ... menampilkan tampilan dengan bentuk HTML. Formulir tersebut akan PUT / POST keresource.update
danresource.store
masing - masing. Jika Anda tidak melakukan itu, maka Anda dapat mengabaikannya dan menyingkirkan metode edit () dan create () di pengontrol Anda.Untuk metode pengontrol rute kita harus mendefinisikan hanya satu rute. Dalam metode get atau post kita harus mendefinisikan rute secara terpisah.
Dan metode sumber daya digunakan untuk membuat beberapa rute untuk menangani berbagai tindakan Restful.
Berikut dokumentasi Laravel tentang ini.
sumber