53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | use think\facade\Route; | ||
|  | use think\Request; | ||
|  | 
 | ||
|  | Route::rule('article/query_article', "article/query", "GET|POST"); | ||
|  | Route::get('article/:id', "article/detail"); | ||
|  | Route::get('articles/:category_id', "article/index"); | ||
|  | Route::get('page/:category_id', "page/index"); | ||
|  | 
 | ||
|  | // 验证码
 | ||
|  | Route::get('captcha/[:id]', "\\think\\captcha\\CaptchaController@index"); | ||
|  | // 单应用模式下 多模块间兼容 模块/控制器/操作的访问模式 等同于 模块.控制器/操作
 | ||
|  | Route::group(function (Request $request) { | ||
|  |     // 控制器必需采用大驼峰,方法必需采用小驼峰
 | ||
|  |     $baseUrl = $request->baseUrl(); | ||
|  |     $baseUrl = explode('.htm', $baseUrl)[0]; | ||
|  |     $urlArr  = explode('/', ltrim($baseUrl, '/')); | ||
|  |     if (!strpos($baseUrl, '.')) { | ||
|  |         $length  = count($urlArr); | ||
|  |         $dirList = []; | ||
|  |         if ($length >= 4) { | ||
|  |             $module     = $urlArr[0]; | ||
|  |             $dirList    = array_slice($urlArr, 1, $length - 3); | ||
|  |             $controller = $urlArr[$length - 2] ?? 'index'; | ||
|  |             $action     = $urlArr[$length - 1] ?? 'index'; | ||
|  |         } else { | ||
|  |             $module     = ''; | ||
|  |             $controller = $urlArr[0] ?? 'index'; | ||
|  |             $action     = $urlArr[1] ?? 'index'; | ||
|  | 
 | ||
|  |             if (in_array($urlArr[0], ['api', 'manager'])) { | ||
|  |                 $module     = $urlArr[0]; | ||
|  |                 $controller = $urlArr[1] ?? 'index'; | ||
|  |                 $action     = $urlArr[2] ?? 'index'; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         $dir = ''; | ||
|  |         if (!empty($dirList)) { | ||
|  |             foreach ($dirList as $d) { | ||
|  |                 $dir .= toCamelString($d, true).'.'; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         // 模块(支持多级目录).控制器/操作  如:/api/aa-bb-cc/dd-ee-ff/gg-hh-ii/controller/action
 | ||
|  |         //  将访问 api.aaBbCc.ddEeFf.ggHhIi.controller/action
 | ||
|  |         $moduleSeparate = !empty($module) ? '.' : ''; | ||
|  |         $route          = $module.$moduleSeparate.$dir.toCamelString($controller).'/'.toCamelString($action, true); | ||
|  | 
 | ||
|  |         Route::rule($baseUrl, $route); | ||
|  |     } | ||
|  | }); |