route resource name constructores laravel laravel-4

name - Laravel-Route:: resource versus Route:: controller



route resource laravel 5 (2)

Leí los documentos en el sitio web de Laravel, Stack Overflow y Google, pero aún no entiendo la diferencia entre Route::resource y Route::controller .

Una de las respuestas dijo que el recurso Route :: era para basura. Sin embargo, con el controlador Route :: podemos lograr lo mismo que con el recurso Route :: y podemos especificar solo las acciones necesarias.

Parecen ser como hermanos:

Route::controller(''post'',''PostController''); Route::resource(''post'',''PostController'');

¿Cómo podemos elegir qué usar? ¿Qué es una buena práctica?


Controlador de recursos RESTful

Un controlador de recursos RESTful configura algunas rutas predeterminadas para usted e incluso las nombra.

Route::resource(''users'', ''UsersController'');

Te da estas rutas con nombre:

Verb Path Action Route Name GET /users index users.index GET /users/create create users.create POST /users store users.store GET /users/{user} show users.show GET /users/{user}/edit edit users.edit PUT /users/{user} update users.update DELETE /users/{user} destroy users.destroy

Y configuraría su controlador de esta manera (acciones = métodos)

class UsersController extends BaseController { public function index() {} public function show($id) {} public function store() {} }

También puede elegir qué acciones están incluidas o excluidas de esta manera:

Route::resource(''users'', ''UsersController'', [ ''only'' => [''index'', ''show''] ]); Route::resource(''monkeys'', ''MonkeysController'', [ ''except'' => [''edit'', ''create''] ]);

Documentación RESTful Resource Controller


Controlador implícito

Un controlador implícito es más flexible. Te enrutas a los métodos de tu controlador según el tipo y nombre de solicitud HTTP. Sin embargo, no tiene nombres de ruta definidos para usted y capturará todas las subcarpetas para la misma ruta.

Route::controller(''users'', ''UserController'');

Lo guiaría a configurar el controlador con una especie de esquema de nombres RESTful:

class UserController extends BaseController { public function getIndex() { // GET request to index } public function getShow($id) { // get request to ''users/show/{id}'' } public function postStore() { // POST request to ''users/store'' } }

Documentación implícita del controlador


Es una buena práctica usar lo que necesita, según su preferencia. Personalmente, no me gustan los controladores implícitos , porque pueden ser desordenados, no proporcionan nombres y pueden ser confusos al usar php artisan routes . Normalmente utilizo los controladores de recursos RESTful en combinación con rutas explícitas.


Para el método de controlador de ruta, tenemos que definir solo una ruta. En el método get o post tenemos que definir la ruta por separado.

Y el método de recursos se usa para crear múltiples rutas para manejar una variedad de acciones de descanso.

Aquí la documentación de Laravel sobre esto.