In this tutorial, I will let you know how to create resource controller with resource routes in Laravel 5.
In every application, it is common to have create, read, update and delete (CRUD) functionality.
Laravel resource controller makes it easier to create CRUD application around resources.
For this post, we will create a simple structure only with the help of some cool resource routes and controllers.
Laravel provides so many interesting feature that you can use in your application to save lots of time.
You can easily create a resource controller using artisan tool.
Resource routeFirst, i will create a resource route that handle different routes.
- Route::resource('users', 'UserController');
Above route will handle following routes :
- Route::get('users',['as'=>'users.index','uses'=>'UserController@index']);
- Route::post('users/create',['as'=>'users.store','uses'=>'UserController@store']);
- Route::get('users/edit/{id}',['as'=>'users.edit','uses'=>'UserController@edit']);
- Route::patch('users/{id}',['as'=>'users.update','uses'=>'UserController@update']);
- Route::delete('users/{id}',['as'=>'users.destroy','uses'=>'UserController@destroy']);
- Route::get('users/{id}',['as'=>'users.show','uses'=>'UserController@show']);
Laravel provides artisan command to check route lists.
php artisan route:list
You will see following output when you run above artisan command :
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+-------------------+---------------+---------------------------------------------+--------------+ | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | users | users.index | App\Http\Controllers\UserController@index | web | | | POST | users | users.store | App\Http\Controllers\UserController@store | web | | | GET|HEAD | users/create | users.create | App\Http\Controllers\UserController@create | web | | | GET|HEAD | users/{user} | users.show | App\Http\Controllers\UserController@show | web | | | PUT|PATCH | users/{user} | users.update | App\Http\Controllers\UserController@update | web | | | DELETE | users/{user} | users.destroy | App\Http\Controllers\UserController@destroy | web | | | GET|HEAD | users/{user}/edit | users.edit | App\Http\Controllers\UserController@edit | web | +--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
To know more about resourceful route click here : Reourceful routing
Resource ControllerNow i will create resource controller by using artisan command.
Run artisan command from command line in the root directory of laravel application.
php artisan make:controller UserController --resource --model=user
By running above command, you will see resource controller "UserController" with all the method we need.
app/Http/Controllers/UserController.php
- <?php
- namespace App\Http\Controllers;
- use App\user;
- use Illuminate\Http\Request;
- class UserController extends Controller
- {
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index()
- {
- //
- }
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create()
- {
- //
- }
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(Request $request)
- {
- //
- }
- /**
- * Display the specified resource.
- *
- * @param \App\user $user
- * @return \Illuminate\Http\Response
- */
- public function show(user $user)
- {
- //
- }
- /**
- * Show the form for editing the specified resource.
- *
- * @param \App\user $user
- * @return \Illuminate\Http\Response
- */
- public function edit(user $user)
- {
- //
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param \App\user $user
- * @return \Illuminate\Http\Response
- */
- public function update(Request $request, user $user)
- {
- //
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param \App\user $user
- * @return \Illuminate\Http\Response
- */
- public function destroy(user $user)
- {
- //
- }
- }
Finally, we have our resource controller with resource routes, so this is really quite easy to create a resource controller in Laravel.