在Symfony2中的配置中动态设置BaseUrl

时间:2011-06-17 05:45:27

标签: apache configuration symfony base-url

我知道在Symfony2的配置中,没有对基本URL的引用,因为没有请求;应用程序可以在cli中运行,也可以在Web服务器中运行,因此我们不能依赖请求。但是,我仍然有配置要求样式表或javascript基本URL(例如JQueryHelperBundle,您可以在其中设置您的jquery本地路径 - 作为本地URL)。问题是,有没有办法动态设置配置的基本URL,而不必更改它,以便:

  • 应用程序可以从开发中的任何目录移动,无论是www / myproject还是www / foo / myproject,而无需更改设置
  • 生产将起作用,除了用apache重写基本URL将被检测到(虚拟主机是常见的,其中baseurl被映射到web目录为'/')。

有没有办法获得基本网址信息?使用$_SERVER['DOCUMENT_ROOT']减去内核根目录之间的差异是否可以检测这样的基本URL?但是虚拟主机如何将网址重新定位到网页目录?对基本网址进行硬编码将项目完全耦合到开发中的位置,移动项目需要每次更改基本网址,这很烦人。

那么,有没有办法根据环境动态检测Symfony2配置中的基本URL,而不依赖于请求?

1 个答案:

答案 0 :(得分:0)

我必须在服务中这样做,所以我在我自己的服务中注入了路由器服务,然后:

$baseUrl = $router->getContext()->getHost();

但我认为它更像是一个真正固定Symfony2框架的黑客。例如,在Controller中,您可以轻松生成绝对URL(例如,来自symfony书):

$router->generate('blog_show', array('slug' => 'my-blog-post'), true);

在树枝模板中,您拥有{{url}}功能

我希望这个帮助