Resource Routes - RESTful Routes in Laravel
Laravel, PHP
Laravel allows you to quickly and easily set up controllers and routes so that you can interact with data in a RESTful way..
Create a Model and Database Table
Create a Model in the usual way (the -m
flag creates a migration for the model, allowing you to set up a new database table):
php artisan make:model Article -m
Amend the migration as necessary and run php artisan migrate
to set up the new table.
Create a Resourceful Controller
Create a controller using Artisan using the --resource
option:
php artisan make:controller ArticleController --resource
This creates a new controller under app/Http/Controllers
, with stubbed out methods to allow interaction with the database table for this resource:
index()
: Display a listing view for the resourcecreate()
: Show the form for creating a new resourcestore()
: Store a newly created resource in storageshow()
: Display the specified resourceedit()
: Update the specified resource in storagedestroy()
: Remove the specified resource from storage
Ruby on Rails has avery similar command: rails g scaffold_controller Article
- which stubs out a similar controller.
Create Route for the Resource
In your routes/web.php
file (Laravel 5.3), create a new route using the resource()
method:
Route::resource('articles', 'ArticleController');
If you check the registered routes now using php artisan route:list
, you’ll see the new (named) routes automatically set up:
+--------+-----------+-------------------------+------------------+------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------------+------------------+------------------------------------------------+--------------+
| | GET|HEAD | articles | articles.index | App\Http\Controllers\ArticleController@index | web |
| | POST | articles | articles.store | App\Http\Controllers\ArticleController@store | web |
| | GET|HEAD | articles/create | articles.create | App\Http\Controllers\ArticleController@create | web |
| | GET|HEAD | articles/{article} | articles.show | App\Http\Controllers\ArticleController@show | web |
| | PUT|PATCH | articles/{article} | articles.update | App\Http\Controllers\ArticleController@update | web |
| | DELETE | articles/{article} | articles.destroy | App\Http\Controllers\ArticleController@destroy | web |
| | GET|HEAD | articles/{article}/edit | articles.edit | App\Http\Controllers\ArticleController@edit | web |
The resource has been set up so that the correct controller methods are triggered when you access a specified route with a given HTTP verb.
comments powered by Disqus