php - route - Ruta de Laravel para controlador de recursos
rutas en laravel (3)
Usando Laravel 4.2, ¿es posible asignar un nombre a una ruta de controlador de recursos? Mi ruta se define de la siguiente manera:
Route::resource(''faq'', ''ProductFaqController'');
Traté de agregar una opción de nombre a la ruta de esta manera:
Route::resource(''faq'', ''ProductFaqController'', array("as"=>"faq"));
Sin embargo, cuando toco la ruta / faq y {{ Route::currentRouteName() }}
en mi vista, arroja faq.faq.index
lugar de solo faq
.
Cuando utiliza una ruta de controlador de recursos, genera automáticamente nombres para cada ruta individual que crea. Route::resource()
es básicamente un método auxiliar que luego genera rutas individuales para usted, en lugar de que necesite definir cada ruta manualmente.
Puede ver los nombres de ruta generados escribiendo php artisan routes
en Laravel 4 o php artisan route:list
en Laravel 5 en su terminal / consola. También puede ver los tipos de nombres de ruta generados en la página de documentos del controlador de recursos ( Laravel 4.x | Laravel 5.x ).
Hay dos formas de modificar los nombres de ruta generados por un controlador de recursos:
Proporcione un conjunto de
names
como parte del tercer parámetro$options
array de$options
, cada clave es el método del controlador de recursos (índice, tienda, edición, etc.) y el valor es el nombre que desea asignar a la ruta.Route::resource(''faq'', ''ProductFaqController'', [ ''names'' => [ ''index'' => ''faq'', ''store'' => ''faq.new'', // etc... ] ]);
Especifique la opción
as
para definir un prefijo para cada nombre de ruta.Route::resource(''faq'', ''ProductFaqController'', [ ''as'' => ''prefix'' ]);
Esto le proporcionará rutas como
prefix.faq.index
,prefix.faq.store
, etc.
Para los buscadores de respuestas con Laravel 5.5+ al encontrar esta página:
Route::namespace(''Admin'')->prefix(''admin'')->name(''admin.'')->group(function () {
Route::resource(''users'',''UserController'');
});
Estas opciones darán como resultado lo siguiente para el Recurso :
namespace()
establece el espacio de nombres del controlador en / Admin / UserControllerprefix()
establece la solicitud URi a / admin / usuariosname()
establece el acceso del nombre de laroute(''admin.users.index'')
a laroute(''admin.users.index'')
En
name()
el DOT está destinado, no es un error tipográfico.
Avíseles a los demás si esto funciona en los comentarios de cualquier versión anterior a Laravel 5.5, actualizaré mi respuesta.
Actualizar:
Puedo confirmar que en Laravel 5.3 el método de name
no está disponible. Aún no hay confirmación si se admite en 5.4
Taylor aceptó mi PR para documentar oficialmente esto en 5.5:
https://laravel.com/docs/5.5/routing#route-group-name-prefixes
Usando Laravel 5.5
Route :: resource (''galería'', ''GalleryController'', [''as'' => ''fotos'']);
importante tener en cuenta el " recurso "
Por ejemplo, envío algo de mi proyecto:
Route::resource(''admin/posts/tags'', ''PostTagController'', [''as'' => ''posts'']);