溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel中如何重寫資源路由自定義URL

發(fā)布時間:2021-07-08 09:03:18 來源:億速云 閱讀:423 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹了Laravel中如何重寫資源路由自定義URL,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

重寫原因

近期在使用Laravel開發(fā)項目過程中,為了簡化路由代碼使用了Laravel的資源路由,Route::resource('photo', 'PhotoController');

在默認情況下,Laravel生成的路由表如下:

動作路徑Action路由名稱
GET/photoindexphoto.index
GET/photo/createcreatephoto.create
POST/photostorephoto.store
GET/photo/{photo}showphoto.show
GET/photo/{photo}/editeditphoto.edit
PUT/PATCH/photo/{photo}updatephoto.update
DELETE/photo/{photo}destroyphoto.destroy

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

實現(xiàn)步驟

查詢了Laravel源碼,發(fā)現(xiàn)此路徑生成的方法在Illuminate\Routing\ResourceRegistrar.php類中,我們需重寫此類的addResourceEdit方法即可。

重寫addResourceEdit方法

創(chuàng)建新類 \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中如何重寫資源路由自定義URL”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI