J'ai lu les documents sur le site Web de Laravel, Stack Overflow et Google, mais je ne comprends toujours pas la différence entre Route::resource
et Route::controller
.
Une des réponses a indiqué que Route :: resource était pour crud. Cependant, avec Route :: controller nous pouvons accomplir la même chose qu'avec Route :: resource et nous ne pouvons spécifier que les actions nécessaires.
Ils semblent être comme des frères et sœurs:
Route::controller('post','PostController');
Route::resource('post','PostController');
Comment pouvons-nous choisir quoi utiliser? Qu'est-ce qu'une bonne pratique?
Réponses:
Contrôleur de ressources RESTful
Un contrôleur de ressources RESTful configure pour vous des routes par défaut et les nomme même.
Vous donne ces itinéraires nommés:
Et vous configureriez votre contrôleur quelque chose comme ceci (actions = méthodes)
Vous pouvez également choisir les actions incluses ou exclues comme ceci:
Documentation du contrôleur de ressources RESTful
Contrôleur implicite
Un contrôleur implicite est plus flexible. Vous êtes dirigé vers vos méthodes de contrôleur en fonction du type et du nom de la requête HTTP. Cependant, vous n'avez pas défini de noms d'itinéraire pour vous et il capturera tous les sous-dossiers pour le même itinéraire.
Vous conduirait à configurer le contrôleur avec une sorte de schéma de dénomination RESTful:
Documentation du contrôleur implicite
Il est recommandé d'utiliser ce dont vous avez besoin, selon vos préférences. Personnellement, je n'aime pas les contrôleurs implicites , car ils peuvent être compliqués, ne fournissent pas de noms et peuvent être déroutants lors de l'utilisation
php artisan routes
. J'utilise généralement des contrôleurs de ressources RESTful en combinaison avec des routes explicites.la source
resource.edit
consiste à afficher une vue d'édition, essentiellement le formulaire d'édition d'une ressource existante.resource.edit
etresource.create
sont généralement pour une interface utilisateur ... rendant une vue avec des formulaires HTML. Ces formulaires PUT / POST àresource.update
etresource.store
respectivement. Si vous ne le faites pas, vous pouvez simplement les ignorer et vous débarrasser des méthodes edit () et create () de votre contrôleur.Pour la méthode du contrôleur de route, nous devons définir une seule route. Dans la méthode get ou post, nous devons définir l'itinéraire séparément.
Et la méthode des ressources est utilisée pour créer plusieurs itinéraires pour gérer une variété d'actions de repos.
Voici la documentation Laravel à ce sujet.
la source