#Parameter yang Diperlukan
Terkadang Anda perlu menangkap segmen URI dalam route Anda. Misalnya, Anda mungkin perlu mengambil ID pengguna dari URL. Anda dapat melakukannya dengan mendefinisikan parameter route :
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Anda dapat menentukan parameter rute sebanyak yang diperlukan oleh rute Anda:
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
Parameter route selalu terbungkus dalam kurung dan harus terdiri dari karakter alfabet, dan mungkin tidak mengandung karakter. Alih-alih menggunakan karakter, gunakan garis bawah ( ). Parameter route dimasukkan ke dalam callback / pengendali rute berdasarkan urutannya - nama-nama argumen callback / controller tidak penting.{}
-
-
_
#Parameter opsional
Kadang-kadang Anda mungkin perlu menentukan parameter route , tetapi menjadikan keberadaan parameter route itu opsional. Anda dapat melakukannya dengan menempatkan ?
tanda setelah nama parameter. Pastikan untuk memberikan variabel default route yang sesuai:
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});
#Kendala Ekspresi Reguler
Anda dapat membatasi format parameter route Anda menggunakan where
metode pada instance route . The where
Metode menerima nama parameter dan ekspresi reguler mendefinisikan bagaimana parameter harus dibatasi:
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Kendala Global
Jika Anda ingin parameter route selalu dibatasi oleh ekspresi reguler yang diberikan, Anda dapat menggunakan pattern
metode ini. Anda harus mendefinisikan pola-pola ini dalam boot
metode Anda RouteServiceProvider
:
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
Route::pattern('id', '[0-9]+');
parent::boot();
}
Setelah pola ditetapkan, pola tersebut secara otomatis diterapkan ke semua rute menggunakan nama parameter itu:
Route::get('user/{id}', function ($id) {
// Only executed if {id} is numeric...
});
Garis miring yang dikodekan ke depan
Komponen routing Laravel memungkinkan semua karakter kecuali /
. Anda harus secara eksplisit mengizinkan /
untuk menjadi bagian dari pengganti Anda menggunakan where
kondisi ekspresi reguler:
Route::get('search/{search}', function ($search) {
return $search;
})->where('search', '.*');
belajar laravel tutorial laravel laravel
Garis miring ke depan yang dikodekan hanya didukung dalam segmen route terakhir.