詳解Laravel中如何重寫資源路由

*文
發布: 2023-03-19 08:26:02
原創
2989 人瀏覽過

Laravel中如何重寫資源路由?本文主要為大家介紹了Laravel中重寫資源路由自訂URL的實作方法,需要的朋友可以參考下。希望對大家有幫助。

前言

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

重寫原因

##近期在使用在 Laravel開發專案過程中,為了簡化路由程式碼使用了Laravel的資源路由,

Route::resource('photo', 'PhotoController');

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

動作路徑ActionGETGETPOSTGET##show#photo.showGET/photo/{photo}/editedit#photo.editPUT/PATCH/photo/{photo}#updatephoto.update
##路由名稱
/photo index photo.index
/photo/create create photo.create
/photo store photo.store
#/photo/{photo}



DELETE

/photo/{photo}destroyphoto.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');###產生的路由就滿足需求了。 #########相關推薦:###############Laravel最佳化之分割路由檔案################# #laravel編寫APP介面(API)##################Laravel之Queue的使用#########

以上是詳解Laravel中如何重寫資源路由的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!