Maison >développement back-end >tutoriel php >Explication détaillée de la façon de réécrire le routage des ressources dans Laravel

Explication détaillée de la façon de réécrire le routage des ressources dans Laravel

*文
*文original
2018-01-03 15:46:163044parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn