
MWI – Setelah tahap 2 kita lanjutkan ke tahap 3 tentang routing
- Routing
- 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
- 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
- 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
- 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
- Membuat group route
Pada materi ini kita akan membahas tentang membuat route untuk kelompok (grup), alias mengelompokan route.
- Route Cadangan