Wed Dec 2019 2 years ago

Cara Membuat Route Parameters Framework Laravel

#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 wheremetode 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', '.*');
 

Garis miring ke depan yang dikodekan hanya didukung dalam segmen route terakhir.

belajar laravel tutorial laravel laravel