Route Laravel

Route::group(['middleware' => ['web']], function(){ Route::resource('blog', 'BlogController'); });

Selamat malam, mohon bantuannya. penjelasan dari sintak di atas? terimakasih

avatar ediubaedillah
@ediubaedillah

5 Kontribusi 0 Poin

Diperbarui 1 tahun yang lalu

2 Jawaban:

Route::group(['middleware' => ['web']], function(){ // baris 1
  Route::resource('blog', 'BlogController'); // baris 2
}); // baris 3

1. Baris 1 kita melakukan group pada route. itu saja. gunanya apa? salah satunya adalah untuk menggunakan middleware. middleware berfungsi untuk menyaring/menfilter (tergantung middleware apa yang digunakan, di dalam laravel masing2 middleware punya fungsi tersendiri) request. kalau di laravel 5.2 route tidak perlu ditambah middleware 'web' lagi karena middleware tersebut dipanggil otomatis. beda mungkin untuk laravel versi dibawahnya (5.1, 5.0, dst) kita harus menambahkan kode ['middleware' => ['web']. agan bisa lihat middleware apa saja yang dipanggil oleh route agan dengan menulis perintah di terminal atau cmd:

php artisan route:list

mengapa kita memanggil middlewarenya di group? bukan di routenya?. kedua2nya bisa dilakukan tergantung kebutuhan

// cara pemanggilan middleware langsung di route
Route::get('blog', 'BlogController@index')->middleware(['auth']);

// cara pemanggilan middleware melalui group
Route::group(['middleware'=>'auth'], function(){
   Route::get('blog', 'BlogController@index');
});

kedua kode diatas sama saja. lantas kalau sama apa yang membedakannya? Anggap route itu sama dengan url, bayangkan agan punya 100 route. www.websaya.com/blog, www.websaya.com/kontak, www.websaya.com/profil, dsb. apa agan ingin membuat route seperti dibawah 100 kali?

// 1
Route::get('blog', 'BlogController@index')->middleware(['auth']);
// 2
Route::get('kontak', 'BlogController@kontak')->middleware(['auth']);
// 3
Route::get('profil', 'BlogController@profil')->middleware(['auth']);

....
// dan seterusnya sampai 100 kali

agan bisa lihat middleware(['auth']) kita ulang2 100 kali. mengapa kita tidak buatkan saja group agar kita tulisnya cuma 1 kali.

Route::group(['middleware'=>'auth'], function(){
   Route::get('blog', 'BlogController@index');
   Route::get('kontak', 'BlogController@kontak');
   Route::get('profil', 'BlogController@profil');

  ...
  // dan seterusnya
});

2. Baris 2 kalau agan paham konsep CRUD maka agan akan mudah memahami ini. di dalam CRUD yang lengkap terdapat 7 url utama: - url untuk menampilkan semua post - url untuk menampilkan 1 post - url untuk menampilkan form pembuatan post - url untuk menerima post yang telah dibuat melalui form - url untuk menampilkan form pengeditan post - url untuk menerima post yang telah diedit melalui form - url untuk menghapus post.

karena laravel tahu bahwa url tersebut adalah url yg umum digunakan dalam CRUD maka dibuatlah fasilitas resource controller. dengan mengetikkan perintah di terminal atau cmd:

php artisan make:controller BlogController --resource

maka laravel akan otomatis menyiapkan controller dan routenya untuk anda. bandingkan route berikut:

// ini 7 url yang kita singgung di atas mengenai CRUD yang dibuat dengan koding manual
Route::get('blog', 'BlogController@index');
Route::post('blog', 'BlogController@store');
Route::get('blog/create', 'BlogController@create');
Route::put('blog/{id}', 'BlogController@update');
Route::get('blog/{id}', 'BlogController@show');
Route::delete('blog/{id}', 'BlogController@destroy');
Route::get('blog/{id}/edit', 'BlogController@edit');

// route CRUD versi laravel. route ini SETARA dengan 7 route di atas.
Route::resource('blog', 'BlogController');

3. Baris 3 ya jelas penutup kode. ada buka kurung, ada tutup kurung.

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 7 tahun yang lalu

Selamat pagi kak @onirusama. Saya mau nanya kak. Berarti kalo dilaravel 5.2 keatas gak usah menggunakan middleware lg ya kak?

avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban