laravel重构路由、重构route.php,进行路由分离

来源:互联网 发布:喜纳昌吉 知乎 编辑:程序博客网 时间:2024/05/16 12:29
路由,我们直接参照官网的文档接口,主要涉及2个文件:app/Http/routes.php// 我们定义的路由app/Providers/RouteServiceProvider.php// 路由服务,会载入定义的路由文件(上面的routes.php)基本用法,参考文档。今天记录的主要目的是:对于整个项目,所有的路由,都写在 'routes.php' 中,文件太大,而且很不清晰。我们根据业务,按目录来划分路由文件!分析 RouteServiceProvider.phppublic function map(Router $router)    {    /*    很清楚的看到,这里已经使用过 'group' 路由群组了,而且:    namespace = App\Http\Controllers// 这也就是我们在routes.php 直接写 Controllers/ 之后的原因     */        $router->group(['namespace' => $this->namespace], function ($router) {            require app_path('Http/routes.php');        });    }开始重构:1.在app/Http/下,创建 'Routes' 目录2.自定义方法:    protected function mapCustomWebRoutes(Router $router)    {        $router->group([            'namespace' => $this->namespace, 'middleware' => 'web',        ], function ($router) {            $route_files = glob(app_path() . '/Http/Routes/*.php');            foreach($route_files as $filename){                require_once($filename);            }        });    }    3.将我们自定义的方法,添加到 map() 方法中:    public function map(Router $router)    {        $router->group(['namespace' => $this->namespace], function ($router) {            require app_path('Http/routes.php');        });        $this->mapCustomWebRoutes($router);    }
/*    上面的重构,出现了一个问题:        我的验证机制,都记录不到了错误输出!!(折腾了好久!) */各种调试,都不清楚什么原因,确实有错误,考虑session中也生成了错误,但是就是再次进入页面,不显示!这种情况,觉得,只有可能是中间件的问题。web中间件组,包含了 'ShareErrorsFromSession' 中间件,就是分配错误的!将拆分出来的路由,重新移入 'routes.php',就可以显示验证错误了!然后查看重构的逻辑,发现:        $router->group([            'namespace' => $this->namespace, 'middleware' => 'web',            /*                这里我为了不让每个文件内部再次写 'web',直接在最外层已经使用了 'web'。然而,我的每个文件内,再次写入了web                google搜索,2次web中间件,可能出现了2次不同的session!,导致认证不了!(可能是这个情况,英文没仔细看,记得好像有类似的意思!)             */         ], function ($router) {            $route_files = glob(app_path() . '/Http/Routes/*.php');            foreach($route_files as $filename){                require_once($filename);            }        });