How to create a Resourceful Routing in Laravel 5.2

How to create a Resourceful Routing in Laravel 5.2

How to create a Resourceful Routing in Laravel 5.2

Before going to know about route resource, you should know about basic routes in Laravel. Normally you define your routes for your application in the app/Http/routes.php file but did you know how routes.php file is loaded.

All routes are loaded by App\Providers\RouteServiceProvider class.

Laravel resourceful routes are expressed by URI and a Closure (Closure are a technique for defining logically scoped name binding in language with first class functions) :


  1. Route::get('/', function () {
  2. return 'Welcome to ExpertPHP';
  3. });
  4. Route::post('tutorial/php', function () {
  5. return 'Welcome to ExpertPHP';
  6. });
  7. Route::put('tutorial/php', function () {
  8. //
  9. });
  10. Route::delete('tutorial/php', function () {
  11. //
  12. });

If you want that your route will work with every HTTP verbs then you may use any methods.


  1. Route::any('tutorial', function () {
  2. return 'Welcome to Expert PHP';
  3. });

Now question is how you will generate URLs for application route, see the syntax to generate URLs using url helper :

$url = url('foo');
Optional or Required Route Parameters :

Sometime you send your http request with needed parameters which you think, it should be required or optional that means segments of URI can be either required or optional so how can you fetch segments or URI and how can you define required or optional segments of URI in your routes :

Required Parameters

  1. Route::get('product/{id}', function ($id) {
  2. return 'Product '.$id;
  3. });

You can also define many required parameters in your route :


  1. Route::get('user/{parent_id}/{child_id}', function ($parent_id, $child_id) {
  2. //
  3. });

Required Parameters are always define with 'curly' braces.

Optional Parameters

Optional Parameters are defined 'curly' braces along with '?' mark.


  1. Route::get('product/{name?}', function ($name = null) {
  2. return $name;
  3. });
  4. Route::get('product/{name?}', function ($name = 'Expert PHP') {
  5. return $name;
  6. });
Named Routes

You can define your named routes using the as array keys while defining the route.Benifits with named routes are: you won't have to care about URLs and you can redired for a specific routes using named routes.


  1. Route::get('product/list', ['as' => 'product', function () {
  2. //
  3. }]);

You can also define named routes for your controller actions.


  1. Route::get('product/list', [
  2. 'as' => 'product', 'uses' => 'ProductController@listProduct'
  3. ]);

Now Question is how you will access named routes in your controller, view or anywhere in application.

Accessing Named Routes

  1. $url = route('product');
  2. $redirect = redirect()->route('product');
Route Prefixes

You can also define prefix for every routes in the group by using prefix group array attribute.

Suppose you are creating a admin module in your application and you need to set prefix with name admin then go through with following syntax :


  1. Route::group(['prefix' => 'admin'], function () {
  2. Route::get('products', function () {
  3. // Matches The "/admin/products" URL
  4. });
  5. });
Defining PHP Namespace to group of Controllers

You can use namespace key to define namespaces for all of your controllers within group.


  1. Route::group(['namespace' => 'Admin'], function()
  2. {
  3. // Controllers Within The "App\Http\Controllers\Admin" Namespace
  4. });

If you want to filter your routes then you will have to define middleware key for all routes which you want to set within filters.

For example, suppose you want to access some url after authentication then go through with following code :


  1. Route::group(['middleware' => 'auth'], function () {
  2. Route::get('user/dashboard', function () {
  3. // Uses Auth Middleware
  4. });
  5. });
Resource Routes

Route::resource('user', 'UserController');

Awesome features comes with Laravel is resourceful routing which have following methods your resource controller.

Phone: (+91) 8800417876
Noida, 201301