In every laravel project explicit controller is very common routing that developer team use.
Explicit routing is pointing every action ( GET, POST) to a function of a controller. Explicit controller provide a clearer view function and routing name. Explicit controller was use to add additional method or method with specific naming convention.
Example of explicit controller that can be find in my project.
//return customer list Route::get('customers', 'CustomerController@index');
//create customer form Route::get('/create','CustomerController@showCustomerForm'); //store customer form Route::post('/create','CustomerController@store');IMPLICIT CONTROLLER (Deprecated)
Implicit controller is flexible because it allows you to easily define a single route to handle every action in a controller. You can define the route using the
Route::controller
method. The controller method accepts two arguments, first is URI the controller handles, while the second is the class name of the controller. According to laravel 5.0 documentation :
If your controller action contains multiple words, you may access the action using "dash" syntax in the URI. For example, the following controller action on our
UserController
would respond to the users/admin-profile
URI:public function getAdminProfile() {}
However implicit controller deprecated in Laravel 5.2. The call
Route::controller
was just added as an extra helper.RESTFUL CONTROLLER
A restful controller can be found with some default routes and naming action .
Using syntax Route::resource('customers', 'CustomerController'); eventually will call default @index action which located in CustomerController.
Actions Handled By Resource Controller
Verb | URI | Action | Route Name |
---|---|---|---|
GET | /customer | index | customer.index |
GET | /customer/create | create | customer.create |
POST | /customer | store | customer.store |
GET | /customer/{customer} | show | customer.show |
GET | /customer/{customer}/edit | edit | customer.edit |
PUT/PATCH | /customer/{customer} | update | customer.update |
DELETE | /customer/{customer} | destroy | customer.destroy |
According to laravel 5.4 documentation HTML forms can't make
PUT
, PATCH
, or DELETE
requests, from here we neeed to add spoofing method in <form> tag. The method field can be define like below :{{ method_field('PUT') }}
No comments:
Post a Comment