tp6 配置default_app是不是无法使用了

浏览:418 发布日期:2019/04/29
5.0.0 - 普通 - 已关闭
    /**
     * 解析多应用
     */
    protected function parseMultiApp(): void
    {
        if ($this->app->config->get('app.auto_multi_app', false)) {
            // 自动多应用识别
            $this->bindDomain = false;

            $bind = $this->app->config->get('app.domain_bind', []);

            if (!empty($bind)) {
                // 获取当前子域名
                $subDomain = $this->app->request->subDomain();
                $domain    = $this->app->request->host(true);

                if (isset($bind[$domain])) {
                    $appName          = $bind[$domain];
                    $this->bindDomain = true;
                } elseif (isset($bind[$subDomain])) {
                    $appName          = $bind[$subDomain];
                    $this->bindDomain = true;
                } elseif (isset($bind['*'])) {
                    $appName          = $bind['*'];
                    $this->bindDomain = true;
                }
            }

            if (!$this->bindDomain) {
                $map  = $this->app->config->get('app.app_map', []);
                $deny = $this->app->config->get('app.deny_app_list', []);
                $path = $this->app->request->pathinfo();
                $name = current(explode('/', $path));

                if (isset($map[$name])) {
                    if ($map[$name] instanceof Closure) {
                        $result  = call_user_func_array($map[$name], [$this]);
                        $appName = $result ?: $name;
                    } else {
                        $appName = $map[$name];
                    }
                } elseif ($name && (false !== array_search($name, $map) || in_array($name, $deny))) {
                    throw new HttpException(404, 'app not exists:' . $name);
                } else {
                    $appName = $name;
                }

                if ($name) {
                    $this->app->request->setRoot($name);
                    $this->app->request->setPathinfo(strpos($path, '/') ? ltrim(strstr($path, '/'), '/') : '');
                }
            }
        } else {
            $appName = $this->name ?: $this->getScriptName();
        }
        $this->loadApp($appName ?: $this->app->config->get('app.default_app', 'index'));
    }

在http类中的解析多应用方法
其中在当前展示代码的第33行
$name = current(explode('/', $path));
获取的是url中第一个参数

而最后在当前展示代码第45行使用
$appName = $name;
让当前$appName赋值为$name;
导致default_app不起作用,只有在输入网址后不加任何参数可以指定到index(配置的)应用的Index控制器的index操作

评论(
后面还有条评论,点击查看>>