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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								});
							 |