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 decía que Route :: resource era para crud. Sin embargo, con Route :: controller podemos lograr lo mismo que con Route :: resource 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?
Respuestas:
Controlador de recursos RESTful
Un controlador de recursos RESTful configura algunas rutas predeterminadas para usted e incluso las nombra.
Te da estas rutas con nombre:
Y configuraría su controlador de esta manera (acciones = métodos)
También puede elegir qué acciones se incluyen o excluyen de esta manera:
Documentación del controlador de recursos RESTful
Controlador implícito
Un controlador implícito es más flexible. Se le enrutará a los métodos de su controlador en función del tipo y el nombre de la solicitud HTTP. Sin embargo, no tiene nombres de ruta definidos para usted y capturará todas las subcarpetas para la misma ruta.
Le llevaría a configurar el controlador con una especie de esquema de nombres RESTful:
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 cuando se usan
php artisan routes
. Normalmente uso controladores de recursos RESTful en combinación con rutas explícitas.fuente
resource.edit
es mostrar una Vista de edición, básicamente, el formulario para editar un recurso existente.resource.edit
yresource.create
son típicamente para una interfaz de usuario ... que representa una vista con formularios HTML. Esos formularios PUT / POST aresource.update
yresource.store
respectivamente. Si no está haciendo eso, simplemente puede ignorarlos y deshacerse de los métodos edit () y create () en su controlador.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 Restful.
Aquí la documentación de Laravel sobre esto.
fuente