Dieser Artikel führt Sie hauptsächlich in die Implementierungsmethode zum Umschreiben einer benutzerdefinierten Ressourcen-Routing-URL in Laravel ein. Freunde, die sie benötigen, können darauf verweisen
Vorwort
Dieser Artikel stellt Ihnen hauptsächlich den relevanten Inhalt zum Umschreiben benutzerdefinierter Ressourcen-Routing-URLs in Laravel vor und teilt ihn als Referenz und zum Studium. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick auf die detaillierte Einführung:
Grund für das Umschreiben
Im jüngsten Prozess der Projektentwicklung mit Laravel habe ich zur Vereinfachung des Routing-Codes die Ressource von Laravel verwendet Routing,Route::resource('photo', 'PhotoController');
Standardmäßig lautet die von Laravel generierte Routing-Tabelle wie folgt:
动作 | 路径 | 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 |
Um die Projektanforderungen zu erfüllen, wird /photo/{photo }/edit path muss geändert werden in / photo/edit/{photo}
Implementierungsschritte
Ich habe das Laravel abgefragt Quellcode und haben festgestellt, dass sich die Methode zum Generieren dieses Pfads in IlluminateRoutingResourceRegistrar befindet. In der PHP-Klasse müssen wir die Methode addResourceEdit dieser Klasse überschreiben.
Schreiben Sie die addResourceEdit-Methode neu
Erstellen Sie eine neue Klasse AppRoutingResourceRegistrar.php mit dem folgenden Code:
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); } }
Registrieren Sie diese Klasse in AppServiceProvider
public function boot() { //重写资源路由 $registrar = new \App\Routing\ResourceRegistrar($this->app['router']); $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) { return $registrar; }); }
Verwenden Sie schließlich die von Der Bedarf ist gedeckt. Route::resource('photo', 'PhotoController');
Über Bindungsvorgänge von Laravel-Framework-Routing und -Controllern
Laravel-Framework-Routing-Einstellungen
Das obige ist der detaillierte Inhalt vonInformationen zur Implementierungsmethode zum Umschreiben einer benutzerdefinierten Ressourcenrouting-URL in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!