我在像https://cms.example.com
在CMS中,我们提供了查看/预览网站上输入内容的链接。但预览链接托管在前台网站上:http://www.example.com
。
我正在使用HtmlHelper :: link()方法通过向其发送一组参数来生成具有反向路由的URL。除了基本URL错误之外,这种方法很好。看起来HtmlHelper只是一些包含在Router :: url()中的额外代码,它自己查找“base”url值。
是否有一些简单的方法可以覆盖此值?我为每个环境(开发,登台,生产)都有单独的配置文件,我可以用它来为这些类型的链接设置基本URL值,但是传入'base'似乎没有在Router类中做任何事情。
我正在考虑覆盖或创建一个扩展HtmlHelper的额外函数,但如果路由本身由路由器处理,我现在必须覆盖/扩展它,这似乎是一团糟。
HtmlHelper :: link的$ url参数引用$this->url()
来解析值。但是HtmlHelper中没有url()方法。它继承自Helper类,其定义为:
public function url($url = null, $full = false) {
return h(Router::url($url, $full));
}
实际上,它只是Router::url()
的包装器,它无法修改基本URL。路由器中有逻辑用于查找基本URL,但用户无法在不使路由器过载的情况下修改它。