Tutorial Laravel 8 - Belajar dan Memahami Route Part #2
Tutorial Laravel 8 - Belajar dan Memahami Route Part #2 - Halo teman-teman, kali ini kita akan melanjutkan pembahasan route di Laravel 8.
Pada tutorial sebelumnya, kita telah sampai pada pembahasan route parameter, dan kali ini kita akan lanjut mulai dari optional parameter.
Tutorial Sebelumnya: Belajar dan memahami Route Part #1
Pembahasan route di Laravel 8 kali ini akan disertai dengan contoh yang bisa kamu praktikkan.
Simak selengkapnya ...
Route Optional
Terkadang kita mungkin perlu menentukan parameter route, tetapi menjadikan keberadaan parameter route tersebut opsional. Maksud optional adalah parameter tersebut bisa digunakan bisa juga tidak.
Kita bisa melakukannya dengan menempatkan tanda ?
setelah nama parameter. Tapi dengan syarat, yaitu pastikan memberikan nilai default pada variabel route yang sesuai.
Contoh:
Route::get('profile/{nama?}', function ($nama = null) { return $nama; }); Route::get('profile/{nama?}', function ($nama = 'Budi') { return $nama; });
Nah, dengan route seperti di atas, kita bisa memberikan parameter atau tidak memberikan parameter.
Cukup mudah, kan?
Membatasi Format Parameter
Di Laravel 8 kita bisa membatasi paramater yang diizinkan dalam suatu format tertentu. Dengan begitu, parameter akan dibatasi dan tidak boleh melanggar ketentuan yang kita buat. Caranya cukup mudah. Kita tinggal menambahkan keyword ->where('syarat').
Contoh:
Tipe 1: Hanya Boleh Huruf Saja
Route::get('profile/{nama}', function ($nama) { // })->where('nama', '[A-Za-z]+');
Tipe 2: Hanya Boleh Angka Saja
Route::get('profile/{id}', function ($id) { // })->where('id', '[0-9]+');
Tipe 3: Gabungan Huruf dan Angka
Route::get('profile/{id}/{nama}', function ($id, $nama) { // })->where(['id' => '[0-9]+', 'nama' => '[a-z]+']);
Tipe 4: Menggunakan Ekspresi reguler
Untuk menambah kecepatan pada pembuatan skema format pada parameter, terkadang kita membutuhkan format pada umumnya.
Route::get('user/{id}/{nama}', function ($id, $name) { /a })->whereNumber('id')->whereAlpha('nama'); Route::get('user/{id}', function ($id) { // })->whereUuid('id');
Penjelasan:
- Dengan menggunakan keyword
whereNumber
akan otomatis hanya angka saja yang diizinkan pada parameter. - Dengan menggunakan keyword
whereAlpha
akan otomatis hanya huruf saja yang diizinkan pada parameter. - Dengan menggunakan keyword
whereUuid
akan otomatis hanya id unik saja yang diizinkan pada parameter.
Tipe 4: Global Constraint
Kita juga bisa mengatur format setiap parameter dengan 1 kali kerja saja. Berbeda dengan tipe sebelumnya yang masing-masing harus dideklarasikan, tipe ini cukup sekali saja.
Silahkan buka file RouteServiceProvider.php
dan pada function boot, ubah menjadi:
public function boot() { Route::pattern('id', '[0-9]+'); }
Dengan kode di atas, maka semua param yang bernama "id" akan mendapatkan format hanya boleh diisi dengan angka saja. Kita juga bisa menambahkan untuk format lainnya di sini.
Tipe 5: Mengizinkan Slash "/" di Parameter
Pada dasarnya semua jenis tipe parameter diizinkan, kecuali /
. Namun ada cara agar / bisa tetap digunakan. Caranya dengan menambahkan kode seperti di bawah ini:
Route::get('search/{search}', function ($search) { return $search; })->where('search', '.*');
... dengan tambahkan .*
akan membuat slash diizinkan.
Named Route
Kita dapat memberikan nama pada masing-masing route dengan menambahkan keyword name.
Contoh:
Route::get('user/profile', [UserProfileController::class, 'show'])->name('profile');
... dengan kode tersebut, kita dapat mengaksesnya dengan cara memanggil route('profile')
Contoh lainnya:
Route::get('user/{id}/profile', [UserProfileController::class, 'show'])->name('profile');
... dengan kode tersebut, kita dapat mengaksesnya dengan cara memanggil route('profile', ['id' => 1]).
Akhir Kata
Demikianlah pembahasan tutorial route di laravel 8 pada part ke 2 ini. Masih ada pembahasan part berikutnya. Jadi, simak terus wildanfuady.com untuk mendapatkan informasi terkait tutorial laravel 8 dari dasar.
Semoga bermanfaat. Aamiin.