Avec Laravel 4.2, est-il possible d’attribuer un nom à une route de contrôleur de ressources? Mon itinéraire est défini comme suit:
Route::resource('faq', 'ProductFaqController');
J'ai essayé d'ajouter une option de nom à l'itinéraire comme ceci:
Route::resource('faq', 'ProductFaqController', array("as"=>"faq"));
Cependant, lorsque je clique sur la route/faq et que je place {{ Route::currentRouteName() }}
à mon avis, il génère faq.faq.index
au lieu de faq
.
Lorsque vous utilisez un itinéraire de contrôleur de ressources, il génère automatiquement des noms pour chaque itinéraire qu'il crée. Route::resource()
est fondamentalement une méthode d'assistance qui génère ensuite des itinéraires individuels pour vous, plutôt que de devoir définir chaque itinéraire manuellement.
Vous pouvez afficher les noms de route générés en tapant php artisan routes
dans Laravel 4 ou php artisan route:list
dans Laravel 5 dans votre terminal/console. Vous pouvez également voir les types de noms de route générés sur la page Documents du contrôleur de ressources ( Laravel 4.x | Laravel 5.x ).
Vous pouvez modifier les noms de route générés par un contrôleur de ressources de deux manières:
Fournissez un tableau names
dans le cadre du troisième paramètre $options
, chaque clé représentant la méthode du contrôleur de ressources (index, magasin, édition, etc.) et la valeur correspondant au nom que vous souhaitez donner à la route.
Route::resource('faq', 'ProductFaqController', [
'names' => [
'index' => 'faq',
'store' => 'faq.new',
// etc...
]
]);
Spécifiez l'option as
pour définir un préfixe pour chaque nom de route.
Route::resource('faq', 'ProductFaqController', [
'as' => 'prefix'
]);
Cela vous donnera des itinéraires tels que prefix.faq.index
, prefix.faq.store
, etc.
Pour les demandeurs de réponse avec Laravel 5.5+, trouver cette page:
Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function () {
Route::resource('users','UserController');
});
Ces options donneront les résultats suivants pour le Ressource:
namespace()
définit l'espace de noms du contrôleur sur\Admin\UserController
prefix()
définit la requête URi à/admin/users
name()
définit l'accesseur de nom de route sur route('admin.users.index')
Dans
name()
le DOT est prévu, ce n'est pas une faute de frappe.
S'il vous plaît laissez les autres savoir si cela fonctionne dans les commentaires pour les versions antérieures à Laravel 5.5, je mettrai à jour ma réponse.
Mettre à jour:
Je peux confirmer que, dans Laravel 5.3, la méthode name
n'est pas disponible . Aucune confirmation si elle est prise en charge dans 5.4
Taylor a accepté que mes relations publiques documentent officiellement ceci en 5.5:
https://laravel.com/docs/5.5/routing#route-group-name-prefixes
Utiliser Laravel 5.5
Route :: resource ('galerie', 'GalleryController', ['as' => 'photos']);
important de garder à l'esprit le " ressource "
Par exemple, j'envoie quelque chose de mon projet:
Route::resource('admin/posts/tags', 'PostTagController', ['as' => 'posts']);
Toutes les mises à jour plus tard, puis Laravel 5.5 avec
Route::resource('faqs', 'FaqController', ['as' => 'faqs']);
si nous n'utilisons pas ['as' => 'faqs']
dans le code ci-dessus, cela fonctionnera également.
[Mis à jour]
Il est important de garder à l’esprit que cela fonctionnera pour " ressource "
Par exemple:
Route::resource('admin/posts/tags', 'PostTagController', ['as' => 'posts']);
et le résultat sera comme
POST | admin/posts/tags | posts.tags.store
GET|HEAD | admin/posts/tags | posts.tags.index
GET|HEAD | admin/posts/tags/create | posts.tags.create
DELETE | admin/posts/tags/{tag} | posts.tags.destroy
PUT|PATCH | admin/posts/tags/{tag} | posts.tags.update
GET|HEAD | admin/posts/tags/{tag} | posts.tags.show
GET|HEAD | admin/posts/tags/{tag}/edit | posts.tags.edit