前言
本文主要給大家介紹了關于Laravel中重寫資源路由自定義URL的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:
重寫原因
近期在使用Laravel開發項目過程中,為了簡化路由代碼使用了Laravel的資源路由,Route::resource( photo , PhotoController
在默認情況下,Laravel生成的路由表如下:
動作路徑Action路由名稱GET/photoindexphoto.indexGET/photo/createcreatephoto.createPOST/photostorephoto.storeGET/photo/{photo}showphoto.showGET/photo/{photo}/editeditphoto.editPUT/PATCH/photo/{photo}updatephoto.updateDELETE/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;html' target='_blank'>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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答