前言
本文主要給大家介紹了關(guān)于Laravel中重寫資源路由自定義URL的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:
重寫原因
	近期在使用Laravel開發(fā)項(xiàng)目過程中,為了簡(jiǎn)化路由代碼使用了Laravel的資源路由,Route::resource('photo', 'PhotoController');
在默認(rèn)情況下,Laravel生成的路由表如下:
| 動(dòng)作 | 路徑 | 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 | 
為了滿足項(xiàng)目需求,需將/photo/{photo}/edit 路徑改為 /photo/edit/{photo}
實(shí)現(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中注冊(cè)這個(gè)類
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');生成的路由就滿足需求了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選