Comment réécrire le routage des ressources dans Laravel ? Cet article vous présente principalement la méthode d'implémentation de réécriture de l'URL personnalisée de routage des ressources dans Laravel. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.
Avant-propos
Cet article présente principalement le contenu pertinent sur la réécriture des URL personnalisées de routage des ressources dans Laravel et le partage pour votre étude de référence, pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée :
Raison de la réécriture
Récemment utilisé pendant le Laravel projet de développement, le routage des ressources de Laravel a été utilisé afin de simplifier le code de routage Route::resource('photo', 'PhotoController');
Par défaut, la table de routage générée par Laravel est la suivante :
动作 | 路径 | Action | 路由名称 |
---|---|---|---|
GET | /photo | index | photo.index |
GET | /photo/create | create | photo.create |
POST | /photo | store | photo.store |
GET | /photo/{photo} | show | photo.show |
GET | /photo/{photo}/edit | edit | photo.edit |
PUT/PATCH | /photo/{photo} | update | photo.update |
DELETE | /photo/{photo} | destroy | photo.destroy |
Afin de répondre aux exigences du projet, le chemin /photo/{photo}/edit doit être modifié en /photo/edit/{photo}
Étapes de mise en œuvre
J'ai interrogé le code source de Laravel et j'ai découvert que la méthode générée par ce chemin se trouve dans la classe IlluminateRoutingResourceRegistrar.php. Nous devons remplacer la méthode addResourceEdit de cette classe.
Réécrire la méthode addResourceEdit
Créer une nouvelle classe AppRoutingResourceRegistrar.php avec le code suivant :
namespace App\Routing; use Illuminate\Routing\ResourceRegistrar as OriginalRegistrar; class ResourceRegistrar extends OriginalRegistrar { /** * Add the edit method for a resourceful route. * * @param string $name * @param string $base * @param string $controller * @param array $options * @return \Illuminate\Routing\Route */ protected function addResourceEdit($name, $base, $controller, $options) { $uri = $this->getResourceUri($name).'/'.static::$verbs['edit'].'/{'.$base.'}'; $action = $this->getResourceAction($name, $controller, 'edit', $options); return $this->router->get($uri, $action); } }
dans AppServiceProvider Enregistrez cette classe
public function boot() { //重写资源路由 $registrar = new \App\Routing\ResourceRegistrar($this->app['router']); $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) { return $registrar; }); }
et enfin utilisez la route générée par Route::resource('photo', 'PhotoController');
pour répondre aux besoins.
Recommandations associées :
Fichier de routage fractionné optimisé Laravel
Laravel écrit une interface APP (API)
Utilisation de la file d'attente de Laravel
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!