laravel 访问时自动生成路由规则

路由访问时自动生成

//路由访问时自动生成
if (php_sapi_name() != 'cli') {
    $middleware_default='checkLogin';//默认中间件
    $middleware_other=['api'=>'checkApi'];//其它中间件

    \App\Library\Common::createRoute($_SERVER['REQUEST_METHOD'],$_SERVER['REQUEST_URI'],$middleware_default,$middleware_other);
}

//=================== 定制路由规则,覆盖上面规则  ============================//
// 首页
Route::group([
    'middleware' => 'checkLogin'
], function () {
    Route::get('/', "Home\IndexController@index");
});

 

/**
     * 创建路由规则
     * @param string $method 请求方法
     * @param string $path 请求地址
     * @param string $middleware_default 默认中间件
     * @param array $middleware_other 其它中间件
     */
    public static function createRoute($method,$path,$middleware_default='',array $middleware_other=[])
    {
        $method = strtolower($method);//请求方法
        $path = explode('?', $path)[0];//请求地址
        if (!in_array($method, ['get', 'post', 'GET', 'POST'])) {
            $method = 'get';
        }
        $uris = explode('/', trim($path, '/'));
        if (is_array($uris) && count($uris) == 3) {
            $uris[0] = ucfirst($uris[0]);
            $uris[1] = ucfirst($uris[1]);

            $attributes = [];
            if (!empty($middleware_other[lcfirst($uris[0])])) {
                $attributes['middleware'] = $middleware_other[lcfirst($uris[0])];
            } else {
                //默认使用的中间件
                if(!empty($middleware_default)){
                    $attributes['middleware'] = $middleware_default;
                }
            }

            \Route::group($attributes, function () use ($method, $path, $uris) {
                //生成对应地址 Route::get('/ucl/notices/index','Ucl\NoticesController@index')
                \Route::$method($path, $uris[0] . '\\' . $uris[1] . 'Controller@' . $uris[2])->name($uris[1] . '.' . $uris[2]);
            });
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值