求助:tp6.0.2 Route类实例的配置问题

浏览:52 发布日期:2020/03/26 分类:ThinkPHP6专区 关键字: Thinkphp6 Route 路由 URL
场景:
创建个性化需求的URL参数模式        $name = $this->request->param('name');
        $app = (new App())->initialize();
        $app->config->set(['url_common_param' => false], 'route');
        dump($app);
        halt($app->route->dispatch($this->app->request));
        $url = $app->route->setConfig(['url_common_param' => false])->buildUrl('isLogin', ['name' => $name]);
        halt($url);
        $string = "欢迎客官光临~<a href=$url>点我验明身份</a>";

        return View::display($string);
要求:不改变任何WEB应用上的整体配置我的思路:
创建一个新的App实例,初始化后获取先应用的所有配置,调用新APP实例容器中的Route实例下的BuildUrl()方法,创建自己需要的URL参数模式
遇到的问题:
Route类里没有直接修改当前配置的方法,只有一个config()方法是可以查看已应用的配置信息,另外还有一个路由调度方法可以用dispatch(),但是需要传入Ruquest实例,而且返回值是Request->run(),也就是Response类里的autoResponse()的结果,一堆的HTML代码,这显然不是我要的结果。

暂时的解决办法:
在Route类中写一个setConfig()方法,返回实例本身    public function setConfig(array $name = [])
    {
        if (is_array($name)) {
           $this->config = array_merge($this->config, $name);
        } elseif (is_string($name)) {
            $this->config[$name] = $name;
        } else {
            return $this->config();
        }

        return $this;
    }
当然也可以直接调用容器中Config实例的set()方法,修改Route类中的$this->config值的同时修改Config实例的配置值方便其他容器中的实例调用。

需要求助的地方:
有没有什么更简便的方法或者容器调用的方式实现这样的目的?
最佳答案
评论( 相关
后面还有条评论,点击查看>>