Laravel Route Parameters

Required Parameters:
We need to capture segments of the URI within our route.
We are going to see how to pass parameters through two or many views inside the closure function.
Route::get('/home', function () {
return "Hello Home Page,
Welcome to Laravel Project";
});
Route::get('/about', function () {
return "Hello About Page, I am
Laravel";
});
Route::get('/contact', function () {
return "Hello Contact Page, Call
Me";
});
Output:



We need to capture a user`s id from the URL.
We do so by defining route parameters.
Route::get(‘/user/{id}’,function($id)
{
Return ‘user ‘ , $id;
});
E.g.:
Route::get('/video/{id}', function($id) {
return "Here We Can Find
Video No. ". $id;
});
Output:

In the above example, we can see how to pass the variable to the closure function.
We define as many route parameters as required by our route:
Route::get(‘posts/{post}/comment}’,function( $postId, $commentId)
{
//
});
E.g.:
Route::get('/image/{id}/{name}', function($id, $name) {
return "Hii This Is Image No. ". $id . " " . $name;
});
Output:

In the above example, the 50 is represented as an ( id ), the Rafia describes as a ( name ).
Route parameters are always enclosed within { } braces, and it should consist of any alphabetic characters. It may not contain a – character. Instead of using the – character, we use an underscore (_). Route parameters are placed into route callbacks/controllers based on their order – the names of the callback/controller arguments do not matter.
Optional Parameters
We need to specify route parameters occasionally, but we make the presence of route parameter route. We can place a (?) mark after the parameter name.
We make sure to give the route`s corresponding variable a default value.
Route::get(‘user/{name?},’function ($name = null)
{
Return $name;
});
Route::get(‘user/{name?},’ function ($name = ‘John’)
{
Return $name;
})
Regular Expression Constraints
We may constrain the format of our route parameters using the where method.
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}’, ($id, $name)
{
//
}) -> where([‘id’ => ‘[0-9]+’, ‘name’ => ‘[a-z]’]);
The where method obtain the name of the parameters and a regular expression defining the parameter that should be constrained:
Global Constraints
We would like a route parameter to always be constrained by a given regular expression, we can use the pattern method. We can define these patterns in the boot method of ours RouteServiceMethod.
public function boot()
{
Route::pattern(‘id’, ‘[0-9]+’);
Parent::both();
}
Once the pattern has been defined, it will be automatically applied to all the outers using the parameter name:
Route::get(‘user/{id},’ function($id)
{
//
});
Encoded Forward Slashes
The Laravel routing component allows all the characters except /. We must explicitly allow / to be part of our placeholder using a where condition regular expression.
Route::get(‘search/{search}’, function ($search)
{
Return $search;
}) -> where(‘search’, ‘.*’);
