路由域名绑定的URL生成改进 使用命名标识生成自动识别域名

This commit is contained in:
thinkphp
2016-08-03 11:44:30 +08:00
parent eda33a2412
commit d7a6308cd3
2 changed files with 5 additions and 2 deletions

View File

@@ -292,7 +292,7 @@ class Route
}
$vars = self::parseVar($rule);
if (isset($name)) {
self::$name[$name] = [$rule, $vars];
self::$name[$name] = [$rule, $vars, self::$domain];
}
if ($group) {
if ('*' != $type) {

View File

@@ -78,6 +78,9 @@ class Url
if ($rule && $match = self::getRuleUrl($rule, $vars)) {
// 匹配路由命名标识 快速生成
$url = $match;
if (!empty($rule[2])) {
$domain = $rule[2];
}
} elseif ($rule && isset($name)) {
throw new \InvalidArgumentException('route name not exists:' . $name);
} else {
@@ -184,7 +187,7 @@ class Url
if (0 === strpos($domain_prefix, '*.') && strpos($domain, ltrim($domain_prefix, '*.')) !== false) {
foreach ($domains as $key => $rule) {
$rule = is_array($rule) ? $rule[0] : $rule;
if (false === strpos($key, '*') && 0 === strpos($url, $rule)) {
if (is_string($rule) && false === strpos($key, '*') && 0 === strpos($url, $rule)) {
$url = ltrim($url, $rule);
$domain = $key;
// 生成对应子域名