6

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

  • 应用程序可以从任何正在开发的目录中移动,无论是 www/myproject 还是 www/foo/myproject,而无需更改设置
  • 除了会检测到用 apache 重写基本 url(虚拟主机很常见,其中基本 url 映射到 web 目录为“/”)之外,生产将工作相同。

有没有办法获取该基本网址信息?使用减去内核根目录之间的差异$_SERVER['DOCUMENT_ROOT']是检测此类基本 url 的一种方法吗?但是 virtualhost 将 url 重新定位到 web 目录上的 / 呢?硬编码基本 url 将项目完全耦合到它在开发中的位置,并且移动项目需要每次都更改基本 url,这很烦人。

那么,有没有一种方法可以根据环境动态检测 Symfony2 配置中的基本 url,而不依赖于请求?

4

1 回答 1

0

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

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

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

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

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

我希望这有帮助

于 2011-06-17T08:48:09.807 回答