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

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

不言
發布: 2023-03-31 22:24:01
原創
1785 人瀏覽過

這篇文章主要給大家介紹了關於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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板