创建个性化需求的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实例的配置值方便其他容器中的实例调用。需要求助的地方:
有没有什么更简便的方法或者容器调用的方式实现这样的目的?
最佳答案