改进路由域名绑定后的url生成

This commit is contained in:
thinkphp
2016-10-22 12:58:05 +08:00
parent 2c15118f60
commit 463dda9d01
2 changed files with 19 additions and 10 deletions

View File

@@ -1203,7 +1203,7 @@ class Route
// 封装路由 // 封装路由
$route = [$module, $controller, $action]; $route = [$module, $controller, $action];
if (isset(self::$rules['name'][implode($depr, $route)])) { if (isset(self::$rules['name'][implode($depr, $route)])) {
throw new HttpException(404, 'invalid request:' . $url); throw new HttpException(404, 'invalid request:' . str_replace('|', $depr, $url));
} }
} }
return ['type' => 'module', 'module' => $route]; return ['type' => 'module', 'module' => $route];

View File

@@ -157,7 +157,7 @@ class Url
} }
// 直接解析URL地址 // 直接解析URL地址
protected static function parseUrl($url, $domain) protected static function parseUrl($url, &$domain)
{ {
$request = Request::instance(); $request = Request::instance();
if (0 === strpos($url, '/')) { if (0 === strpos($url, '/')) {
@@ -172,15 +172,24 @@ class Url
} else { } else {
// 解析到 模块/控制器/操作 // 解析到 模块/控制器/操作
$module = $request->module(); $module = $request->module();
if (true === $domain) {
$domains = Route::rules('domain'); $domains = Route::rules('domain');
foreach ($domains as $key => $item) {
if (isset($item['[bind]']) && 0 === strpos($url, $item['[bind]'][0])) {
$url = substr($url, strlen($item['[bind]'][0]) + 1);
$domain = $key;
$module = '';
}
}
} elseif ($domain) {
if (isset($domains[$domain]['[bind]'][0])) { if (isset($domains[$domain]['[bind]'][0])) {
$bindModule = $domains[$domain]['[bind]'][0]; $bindModule = $domains[$domain]['[bind]'][0];
if ($bindModule && !in_array($bindModule[0], ['\\', '@'])) { if ($bindModule && !in_array($bindModule[0], ['\\', '@'])) {
$module = ''; $module = '';
} }
} else {
$module = $module ? $module . '/' : '';
} }
}
$module = $module ? $module . '/' : '';
$controller = Loader::parseName($request->controller()); $controller = Loader::parseName($request->controller());
if ('' == $url) { if ('' == $url) {