首頁 >後端開發 >php教程 >關於Laravel中重寫資源路由自訂URL的實作方法

關於Laravel中重寫資源路由自訂URL的實作方法

不言
不言原創
2018-06-13 11:49:221800瀏覽

這篇文章主要給大家介紹了關於Laravel中重寫資源路由自訂URL的實作方法,需要的朋友可以參考下

前言

本文主要為大家介紹了Laravel中重寫資源路由自訂URL的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

重寫原因

近期在使用Laravel開發專案過程中,為了簡化路由程式碼使用了Laravel的資源路由,Route::resource('photo', 'PhotoController');

在預設情況下,Laravel產生的路由表如下:

動作 路徑 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

為了滿足專案需求,需將/photo/{photo}/edit 路徑改為/photo/ edit/{photo}

實作步驟

#查詢了Laravel原始碼,發現此路徑產生的方法在Illuminate\Routing\ ResourceRegistrar.php類別中,我們需要重寫這類的addResourceEdit方法即可。

重寫addResourceEdit方法

建立新類別\App\Routing\ResourceRegistrar.php,程式碼如下:

#
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);
 }
}

在AppServiceProvider中註冊這個類別

public function boot()
 {
  //重写资源路由
  $registrar = new \App\Routing\ResourceRegistrar($this->app['router']);
  $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) {
   return $registrar;
  });
 }

最後使用Route::resource('photo', 'PhotoController');產生的路由就滿足需求了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於Laravel框架路由和控制器的綁定操作

Laravel框架的路由設定

#

以上是關於Laravel中重寫資源路由自訂URL的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn