内核更新
This commit is contained in:
@@ -58,4 +58,5 @@ return [
|
|||||||
'tag error' => '模板标签错误',
|
'tag error' => '模板标签错误',
|
||||||
'cache write error' => '缓存写入失败',
|
'cache write error' => '缓存写入失败',
|
||||||
'sae mc write error' => 'SAE mc 写入错误',
|
'sae mc write error' => 'SAE mc 写入错误',
|
||||||
|
'route name not exists' => '路由命名标识不存在',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -257,7 +257,8 @@ class Route
|
|||||||
protected static function setRule($rule, $route, $type = '*', $option = [], $pattern = [], $group = '')
|
protected static function setRule($rule, $route, $type = '*', $option = [], $pattern = [], $group = '')
|
||||||
{
|
{
|
||||||
if (is_array($rule)) {
|
if (is_array($rule)) {
|
||||||
list($name, $rule) = $rule;
|
$name = $rule[0];
|
||||||
|
$rule = $rule[1];
|
||||||
}
|
}
|
||||||
if ('$' == substr($rule, -1, 1)) {
|
if ('$' == substr($rule, -1, 1)) {
|
||||||
// 是否完整匹配
|
// 是否完整匹配
|
||||||
@@ -334,11 +335,11 @@ class Route
|
|||||||
}
|
}
|
||||||
if (!empty($name)) {
|
if (!empty($name)) {
|
||||||
// 分组
|
// 分组
|
||||||
|
$currentGroup = self::getGroup('name');
|
||||||
|
if ($currentGroup) {
|
||||||
|
$name = $currentGroup . '/' . ltrim($name, '/');
|
||||||
|
}
|
||||||
if ($routes instanceof \Closure) {
|
if ($routes instanceof \Closure) {
|
||||||
$currentGroup = self::getGroup('name');
|
|
||||||
if ($currentGroup) {
|
|
||||||
$name = $currentGroup . '/' . ltrim($name, '/');
|
|
||||||
}
|
|
||||||
$currentOption = self::getGroup('option');
|
$currentOption = self::getGroup('option');
|
||||||
$currentPattern = self::getGroup('pattern');
|
$currentPattern = self::getGroup('pattern');
|
||||||
self::setGroup($name, $option, $pattern);
|
self::setGroup($name, $option, $pattern);
|
||||||
@@ -348,7 +349,6 @@ class Route
|
|||||||
self::$rules['*'][$name]['var'] = self::parseVar($name);
|
self::$rules['*'][$name]['var'] = self::parseVar($name);
|
||||||
self::$rules['*'][$name]['option'] = $option;
|
self::$rules['*'][$name]['option'] = $option;
|
||||||
self::$rules['*'][$name]['pattern'] = $pattern;
|
self::$rules['*'][$name]['pattern'] = $pattern;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
foreach ($routes as $key => $val) {
|
foreach ($routes as $key => $val) {
|
||||||
if (is_numeric($key)) {
|
if (is_numeric($key)) {
|
||||||
@@ -381,6 +381,9 @@ class Route
|
|||||||
$currentGroup = self::getGroup('name');
|
$currentGroup = self::getGroup('name');
|
||||||
$currentOption = self::getGroup('option');
|
$currentOption = self::getGroup('option');
|
||||||
$currentPattern = self::getGroup('pattern');
|
$currentPattern = self::getGroup('pattern');
|
||||||
|
if ($currentGroup) {
|
||||||
|
$name = $currentGroup . '/' . ltrim($name, '/');
|
||||||
|
}
|
||||||
self::setGroup($name, $option, $pattern);
|
self::setGroup($name, $option, $pattern);
|
||||||
call_user_func_array($routes, []);
|
call_user_func_array($routes, []);
|
||||||
self::setGroup($currentGroup, $currentOption, $currentPattern);
|
self::setGroup($currentGroup, $currentOption, $currentPattern);
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ use think\Route;
|
|||||||
|
|
||||||
class Url
|
class Url
|
||||||
{
|
{
|
||||||
// 生成URL地址的root
|
|
||||||
protected static $root;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* URL生成 支持路由反射
|
* URL生成 支持路由反射
|
||||||
* @param string $url URL表达式,
|
* @param string $url URL表达式,
|
||||||
@@ -39,6 +36,11 @@ class Url
|
|||||||
$domain = true;
|
$domain = true;
|
||||||
}
|
}
|
||||||
// 解析URL
|
// 解析URL
|
||||||
|
if (0 === strpos($url, '[') && $pos = strpos($url, ']')) {
|
||||||
|
// [name] 表示使用路由命名标识生成URL
|
||||||
|
$name = substr($url, 1, $pos - 1);
|
||||||
|
$url = 'name' . substr($url, $pos + 1);
|
||||||
|
}
|
||||||
$info = parse_url($url);
|
$info = parse_url($url);
|
||||||
$url = !empty($info['path']) ? $info['path'] : '';
|
$url = !empty($info['path']) ? $info['path'] : '';
|
||||||
if (isset($info['fragment'])) {
|
if (isset($info['fragment'])) {
|
||||||
@@ -69,10 +71,12 @@ class Url
|
|||||||
$vars = array_merge($params, $vars);
|
$vars = array_merge($params, $vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
$rule = Route::name($url);
|
$rule = Route::name(isset($name) ? $name : $url);
|
||||||
if ($rule && $match = self::getRuleUrl($rule, $vars)) {
|
if ($rule && $match = self::getRuleUrl($rule, $vars)) {
|
||||||
// 匹配路由命名标识 快速生成
|
// 匹配路由命名标识 快速生成
|
||||||
$url = $match;
|
$url = $match;
|
||||||
|
} elseif ($rule && isset($name)) {
|
||||||
|
throw new \InvalidArgumentException('route name not exists:' . $name);
|
||||||
} else {
|
} else {
|
||||||
// 获取路由别名
|
// 获取路由别名
|
||||||
$alias = self::getRouteAlias();
|
$alias = self::getRouteAlias();
|
||||||
@@ -122,7 +126,7 @@ class Url
|
|||||||
// 检测域名
|
// 检测域名
|
||||||
$domain = self::parseDomain($url, $domain);
|
$domain = self::parseDomain($url, $domain);
|
||||||
// URL组装
|
// URL组装
|
||||||
$url = $domain . (self::$root ?: Request::instance()->root()) . '/' . ltrim($url, '/');
|
$url = $domain . Request::instance()->root() . '/' . ltrim($url, '/');
|
||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,11 +342,4 @@ class Url
|
|||||||
{
|
{
|
||||||
Cache::rm('think_route_map');
|
Cache::rm('think_route_map');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// 指定当前生成URL地址的root
|
|
||||||
public static function root($root)
|
|
||||||
{
|
|
||||||
self::$root = $root;
|
|
||||||
Request::instance()->root($root);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user