Laravel中重寫(xiě)資源路由自定義URL的實(shí)現(xiàn)方法
前言
本文主要給大家介紹了關(guān)于Laravel中重寫(xiě)資源路由自定義URL的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹:
重寫(xiě)原因
近期在使用Laravel開(kāi)發(fā)項(xiàng)目過(guò)程中,為了簡(jiǎn)化路由代碼使用了Laravel的資源路由,Route::resource('photo', 'PhotoController');
在默認(rèn)情況下,Laravel生成的路由表如下:
動(dòng)作 | 路徑 | Action | 路由名稱(chēng) |
---|---|---|---|
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 |
為了滿(mǎn)足項(xiàng)目需求,需將/photo/{photo}/edit 路徑改為 /photo/edit/{photo}
實(shí)現(xiàn)步驟
查詢(xún)了Laravel源碼,發(fā)現(xiàn)此路徑生成的方法在Illuminate\Routing\ResourceRegistrar.php類(lèi)中,我們需重寫(xiě)此類(lèi)的addResourceEdit方法即可。
重寫(xiě)addResourceEdit方法
創(chuàng)建新類(lèi) \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è)類(lèi)
public function boot() { //重寫(xiě)資源路由 $registrar = new \App\Routing\ResourceRegistrar($this->app['router']); $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) { return $registrar; }); }
最后使用Route::resource('photo', 'PhotoController');
生成的路由就滿(mǎn)足需求了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Laravel框架路由配置總結(jié)、設(shè)置技巧大全
- 跟我學(xué)Laravel之路由
- Laravel中獲取路由參數(shù)Route Parameters的五種方法示例
- ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼
- Laravel最佳分割路由文件(routes.php)的方式
- 修改Laravel5.3中的路由文件與路徑
- laravel中命名路由的使用方法
- Laravel 5框架學(xué)習(xí)之路由、控制器和視圖簡(jiǎn)介
- Laravel 之url參數(shù),獲取路由參數(shù)的例子
- Laravel路由研究之domain解決多域名問(wèn)題的方法示例
- Laravel框架路由和控制器的綁定操作方法
- Laravel 框架路由原理與路由訪問(wèn)實(shí)例分析
相關(guān)文章
PHP內(nèi)置函數(shù)生成隨機(jī)數(shù)實(shí)例
在本篇文章里小編給大家分享了關(guān)于PHP內(nèi)置函數(shù)生成隨機(jī)數(shù)實(shí)例內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。2019-01-01如何解決PHP使用mysql_query查詢(xún)超大結(jié)果集超內(nèi)存問(wèn)題
這篇文章主要介紹了如何解決PHP使用mysql_query查詢(xún)超大結(jié)果集超內(nèi)存問(wèn)題 的相關(guān)資料,需要的朋友可以參考下2016-03-03php 購(gòu)物車(chē)完整實(shí)現(xiàn)代碼
本文介紹一個(gè)php實(shí)現(xiàn)的購(gòu)物車(chē)代碼,功能實(shí)現(xiàn)比較完整,實(shí)現(xiàn)了購(gòu)物車(chē)、訂貨人信息、會(huì)員價(jià)等功能,還是不錯(cuò)的,有需要的朋友,可以參考下2014-06-06Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶(hù)
這篇文章主要給大家介紹了關(guān)于Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶(hù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel6.18.19具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06PHP文件上傳小程序 適合初學(xué)者學(xué)習(xí)!
這篇文章主要為大家詳細(xì)介紹了PHP文件上傳小程序,給初學(xué)者提供的PHP文件上傳小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05destoon實(shí)現(xiàn)調(diào)用圖文新聞的方法
這篇文章主要介紹了destoon實(shí)現(xiàn)調(diào)用圖文新聞的方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-08-08ThinkPHP模板范圍判斷輸出In標(biāo)簽與Range標(biāo)簽用法詳解
這篇文章主要介紹了ThinkPHP模板范圍判斷輸出In標(biāo)簽與Range標(biāo)簽用法,需要的朋友可以參考下2014-06-06php檢測(cè)iis環(huán)境是否支持htaccess的方法
這篇文章主要介紹了php檢測(cè)iis環(huán)境是否支持htaccess的方法,需要的朋友可以參考下2014-02-02php結(jié)合ajax實(shí)現(xiàn)贊、頂、踩功能實(shí)例
這篇文章主要介紹了php結(jié)合ajax實(shí)現(xiàn)贊、頂、踩功能實(shí)例,包含PHP代碼、JS代碼和數(shù)據(jù)庫(kù)端代碼,非常詳細(xì),入門(mén)非常好的例子,需要的朋友可以參考下2014-05-05