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

Ste*_*ato 5 apache configuration base-url symfony

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

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

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

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

Reu*_*ven 0

我必须在服务中执行此操作,因此我将路由器服务注入到我自己的服务中,然后:

$baseUrl = $router->getContext()->getHost();
Run Code Online (Sandbox Code Playgroud)

但我更多地认为它是一种 hack,而不是 Symfony2 框架的真正固定装置。例如,在 Controller 中,您可以轻松生成绝对 url(来自 symfony 书中的示例):

$router->generate('blog_show', array('slug' => 'my-blog-post'), true);
Run Code Online (Sandbox Code Playgroud)

在 twig 模板中,您有 {{ url }} 函数

我希望这有帮助

  • 嗯,但是我怎样才能在配置中使用它呢?有时,某些配置使用基本 url,即使在没有任何请求的情况下从 CLI 运行时也是如此,该基本 url 可能会根据环境、项目位置或虚拟主机而更改。尽管从 CLI 运行时基本 url 不正确也没关系)。不知道你是否明白我的问题的意思? (2认同)