Belajar Laravel dari Blank sampai On #3

By | Maret 11, 2023

MWI – Setelah tahap 2 kita lanjutkan ke tahap 3 tentang routing

  1. Routing
    1. Menentukan route

Buka file web.php yang berada pada folder routes perhatikan isinya

Route::get(‘/’, function () {

   return view(‘welcome’);

});

Artinya

Coba tambahkan

Route::get(‘/contacts’, function() {

   return “<h1> Daftar Kontak</h1>”;

});

Cek hasilnya di browser

Coba tambahkan

Route::get(‘/contacts/create’, function() {

   return “<h1>Tambah Kontak Baru</h1>”;

});

Cek kembali hasilnya

Cek route apa saja yang ada di project ini dengan perintah

php artisan route:list

Terlihat bahwa ada 8 route yang dikenal di project contact-app yang sedang kita buat ini, termasuk route default yang sudah dibuat oleh laravel. 

Berikan opsi –except-vendor untuk menampilkan list diluar vendor

php artisan route:list –-except-vendor

Untuk perintah sebaliknya dapat menambahkan opsi –only-vendor menjadi

php artisan route:list –-only-vendor

php artisan route:list –-path=contacts

php artisan route:list –-path=contacts -r

php artisan route:list –h

  1. Routes Parameters

Untuk menambahkan parameter semisal think.ms:8000/contacts/1 pada address bar browser kita dapat mengatur pada folder /routes/web.php menjadi

Route::get(‘/contacts/{id}’, function($id) {

   return “Ini Kontak ke-” . $id;

});

Hasil pada browser menjadi

Lanjutkan dengan parameter untuk nama, misal

Route::get(‘/companies/{name?}’, function($name=null) {

   if($name) {

       return “Nama Perusahaan: ” . $name;

   } else {

       return “Nama Perusahaan Kosong”;

   }

});

Jika isi parameter berisi nama perusahaan

Jika tidak diisi

  1. Membatasi Parameter Route

Kita dapat menambahkan parameter dengan where untuk membatasi tambahan isian pada address bar, misal pada route contacts kita tambahkan where menjadi

Route::get(‘/contacts/{id}’, function($id) {

   return “Ini Kontak ke-” . $id;

})->where(‘id’, ‘[0-9]+’);

Artinya isian id hanya dapat diisi dengan angka dari0-9 saja. Lihat bedanya ketika kita menggunakan where 

dan tanpa where

Begitu juga untuk companies kita dapat menambahkan pilihan isian dengan huruf a-z dan huruf A-Z, tambahan where dapat kita tulis menjadi where(‘name’, ‘[a-zA-Z]+’);

Route::get(‘/companies/{name?}’, function($name=null) {

   if($name) {

       return “Nama Perusahaan: ” . $name;

   } else {

       return “Nama Perusahaan Kosong”;

   }

})->where(‘name’, ‘[a-zA-Z]+’);

 Bandingkan hasilnya antara dengan where

Dan tanpa where

Penulisan ->where(‘id’, ‘[0-9]+’); dapat menggunakan whereNumber(‘id’); dengan hasil yang sama begitu juga juga ->where(‘name’, ‘[a-zA-Z0-9]+’); dapat menggunakan whereAlpha(‘nama’); atau jadikan ->whereAlphaNumeric(‘name’); jika ingin angka diizinkan, coding lengkap menjadi

Route::get(‘/contacts/{id}’, function($id) {

   return “Ini Kontak ke-” . $id;

})->whereNumber(‘id’);

Route::get(‘/companies/{name?}’, function($name=null) {

   if($name) {

       return “Nama Perusahaan: ” . $name;

   } else {

       return “Nama Perusahaan Kosong”;

   }

})->whereAlphaNumeric(‘name’);

Demikian pembahasan mengenai pembatasan pada parameter route

  1. Memberi nama route

Ubah pada route / menjadi

Route::get(‘/’, function () {

   $html = “

   <h1>Contact App</h1>

   <div>

       <a href=’/contacts’>All contacts</>

       <a href=’/contacts/create’>Add contacts</>

       <a href=’/contacts/1′>Show contacts</>

   </div>

   “;

   return $html;

   // return view(‘welcome’);

});

Tes di browser dan pastikan semua link berjalan sempurna, seperti ini

Klik pada pilihan All contacts

Namun ketika ada perubahan pada route All contacts misal akna dibuat singular menjadi seperti ini

Route::get(‘/contact’, function() {

   return “<h1>Daftar Kontak</h1>”;

});

Ternyata link menjadi tidak dapat dijangkau dan menampilkan 404

Untuk mengatasi permasalahan ini beri nama pada route yang kita miliki. Pada contoh route contact tadi cara yang dapat dilakukan adalah ubah metode namanya menjadi ->name(‘contacts.index’) lakukan hal yang sama untuk create dan view, hingga route-nya menjadi

Route::get(‘/contact’, function() {

   return “<h1>Daftar Kontak</h1>”;

})->name(‘contacts.index’);

Route::get(‘/contacts/create’, function() {

   return “<h1>Tambah Kontak Baru</h1>”;

})->name(‘contacts.create’);

Route::get(‘/contacts/{id}’, function($id) {

   return “Ini Kontak ke-” . $id;

})->whereNumber(‘id’)->name(‘contacts.show’);

Lakukan juga perubahan untuk link html pada route / dengan menambahkan route() dan sesuaikan dengan route name yang diberikan diatas, kode-nya menjadi

Route::get(‘/’, function () {

   $html = “

   <h1>Contact App</h1>

   <div>

       <a href='” . route(‘contacts.index’) . “‘>All contacts</>

       <a href='” . route(‘contacts.create’) . “‘>Add contacts</>

       <a href='” . route(‘contacts.show’, 1) . “‘>Show contacts</>

   </div>

   “;

   return $html;

   // return view(‘welcome’);

});

Cek di browser refresh ulang dan klik pada link yang ada, pastikan semua link berfungsi dengan baik seperti ini

Tes dengan melakukan perubahan link pada route contact menjadi contacts (mengembalikan ke plural word), 

Route::get(‘/contacts’, function() {

   return “<h1>Daftar Kontak</h1>”;

})->name(‘contacts.index’);

cek ulang pada browser, ternyata semua tetap berjalan baik meski ada perubahan link, itulah kegunaan dari route name 

Jika perubahan pada link, dengan route name yang sama, maka link tetap dapat tetap berfungsi sempurna.  Untuk cek link daftar route yang ada dan yang sudah kita buat dapat menggunakan perintah php artisan route:list

Kita juga dapat menampilkan hanya daftar yang kita buat saja dengan menambahkan opsi kecuali vendor –except-vendor

  1. Membuat group route

Pada materi ini kita akan membahas tentang membuat route untuk kelompok (grup), alias mengelompokan route.  

  1. Route Cadangan

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.