实现多应用链接生成

This commit is contained in:
augushong
2020-10-18 12:25:23 +08:00
parent c756fe2b60
commit 6cb6cc5ad0
2 changed files with 35 additions and 0 deletions

View File

@@ -263,3 +263,36 @@ function get_order_sn($start = '', $end = '')
{
return $start . date('YmdHis') . mt_rand(1000, 9999) . $end;
}
/**
* 多应用下的url生成器
* 在这里的@后面跟随的首先被认为成应用名而不是源文档的域名(或子域名)
* 程序会尝试找到应用对应的域名来生成地址,如果没找到,则按照源文档的逻辑执行
* @param string $url
* @param array $vars
* @param boolean $suffix
* @param boolean $domain
* @return void
*/
function app_url(string $url = '', array $vars = [], $suffix = true, $domain = false)
{
$url_result = explode('@', $url);
// 在这里,@首先认为是应用名,而不是域名(或子域名)
if (isset($url_result[1])) {
$app_default_doamin = config('app.app_default_doamin');
if (empty($app_default_doamin)) {
$app_domain_bind = config('app.domain_bind');
if (!empty($app_domain_bind)) {
$app_default_doamin = array_flip($app_domain_bind);
}
}
if (isset($app_default_doamin[$url_result[1]])) {
$url = $url_result[0] . "@" . $app_default_doamin[$url_result[1]];
}
}
return url($url, $vars, $suffix, $domain);
}

View File

@@ -23,6 +23,8 @@ return [
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => [],
// 应用默认域名(自动多应用模式有效,为空时采用domain_bind的设置键值对换,适合跨应用生成url
'app_default_doamin' => [],
// 禁止URL访问的应用列表自动多应用模式有效
'deny_app_list' => [],