使用Router / HtmlHelper在Cakephp中使用不同的基本URL自定义路由

时间:2014-02-19 16:45:37

标签: php cakephp cakephp-2.4

我在像https://cms.example.com

这样的网址上使用CakePHP运行CMS

在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,但用户无法在不使路由器过载的情况下修改它。

0 个答案:

没有答案