Laravel中重寫資源路由自定義URL的實(shí)現(xiàn)方法
前言
本文主要給大家介紹了關(guān)于Laravel中重寫資源路由自定義URL的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:
重寫原因
近期在使用Laravel開發(fā)項(xiàng)目過程中,為了簡化路由代碼使用了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中注冊這個(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é)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Laravel框架路由配置總結(jié)、設(shè)置技巧大全
- 跟我學(xué)Laravel之路由
- Laravel中獲取路由參數(shù)Route Parameters的五種方法示例
- ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼
- Laravel最佳分割路由文件(routes.php)的方式
- 修改Laravel5.3中的路由文件與路徑
- laravel中命名路由的使用方法
- Laravel 5框架學(xué)習(xí)之路由、控制器和視圖簡介
- Laravel 之url參數(shù),獲取路由參數(shù)的例子
- Laravel路由研究之domain解決多域名問題的方法示例
- Laravel框架路由和控制器的綁定操作方法
- Laravel 框架路由原理與路由訪問實(shí)例分析
相關(guān)文章
使用composer安裝使用thinkphp6.0框架問題【視頻教程】
這篇文章主要介紹了使用composer安裝使用thinkphp6.0框架問題,通過一個(gè)小視頻給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
thinkphp微信開之安全模式消息加密解密不成功的解決辦法
使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,現(xiàn)將分析解決結(jié)果做下記錄,對thinkphp加密解密相關(guān)知識(shí)感興趣的朋友參考下2015-12-12
codeigniter數(shù)據(jù)庫操作函數(shù)匯總
網(wǎng)上倒是有不少Codeigniter數(shù)據(jù)庫操作的介紹,這里做一個(gè)匯總,需要的朋友可以參考下2014-06-06
利用PHP訪問數(shù)據(jù)庫_實(shí)現(xiàn)分頁功能與多條件查詢功能的示例
下面小編就為大家?guī)硪黄肞HP訪問數(shù)據(jù)庫_實(shí)現(xiàn)分頁功能與多條件查詢功能的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
php腳本運(yùn)行時(shí)的超時(shí)機(jī)制詳解
在我們平常的開發(fā)中,也許曾經(jīng)都遇到過PHP腳本運(yùn)行超時(shí)的情況,當(dāng)遇到這種情況我們經(jīng)常會(huì)通過使用 set_time_limit(非安全模式),或修改配置文件并重啟服務(wù)器,或者修改程序減少程序的執(zhí)行時(shí)間,使其在允許的范圍之內(nèi),以解決此問題。2016-02-02

