Laravel 5.8:如何在核心Router.php文件中添加自定义匿名路由
解决Laravel 5.8中无法修改核心Router.php添加路由的问题
别碰vendor目录的核心文件
/vendor下的文件是Composer管理的依赖包,每次执行composer install或composer update都会覆盖所有修改,而且修改核心文件完全违背Laravel的设计规范,后续维护只会给自己挖坑。直接在框架自带的路由文件里加匿名路由
Laravel的路由本来就该写在routes/目录下的文件里,比如routes/web.php(前端路由)或routes/api.php(接口路由),直接往里加就行:// routes/web.php Route::get('/my-custom-route', function () { return '这是自定义匿名路由的返回内容'; });要扩展路由功能?用路由宏或自定义路由文件
如果需要自定义路由逻辑,不用改核心Router,试试这两种方法:- 路由宏扩展Router功能
打开App\Providers\AppServiceProvider.php,在boot方法里定义宏:
之后在路由文件里直接用这个宏:use Illuminate\Routing\Router; public function boot() { Router::macro('customRoute', function ($uri, $callback) { // 这里可以自定义路由规则,比如强制加中间件、设置前缀等 return $this->get($uri, $callback)->middleware('web'); }); }Route::customRoute('/special-route', function () { return '通过路由宏创建的自定义路由'; }); - 加载自定义路由文件
打开app/Providers/RouteServiceProvider.php,在map方法里新增自定义路由的加载逻辑:
然后新建public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); // 加载自定义路由文件 $this->mapCustomRoutes(); } protected function mapCustomRoutes() { Route::prefix('custom') ->middleware('web') ->namespace($this->namespace) ->group(base_path('routes/custom.php')); }routes/custom.php文件,在里面写匿名路由:Route::get('/test', function () { return '自定义路由文件里的匿名路由'; });
- 路由宏扩展Router功能
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

