我知道在 Symfony2 的配置中,没有对基本 url 的引用,因为没有请求;该应用程序可以在 cli 中运行,也可以在 Web 服务器中运行,因此我们不能依赖请求。但是,我仍然有要求样式表或 javascript 基本 url 的配置(例如 JQueryHelperBundle,您可以在其中设置 jquery 本地路径 - 作为本地 url)。问题是,有没有一种方法可以动态设置配置的基本 url,而不必更改它,以便:
- 应用程序可以从任何正在开发的目录移动,无论是 www/myproject 还是 www/foo/myproject,而无需更改设置
- 生产环境的工作原理是一样的,除了会检测到用 apache 重写基本 url(虚拟主机很常见,其中基本 url 作为“/”映射到 Web 目录)。
有没有办法获取该基本 url 信息?会使用之间的差异$_SERVER['DOCUMENT_ROOT']
减去内核根目录是检测此类基本网址的方法吗?但是,虚拟主机将 url 重新设置为 Web 目录上的 / 又如何呢?对基本 url 进行硬编码将项目与开发中的位置完全耦合起来,并且移动项目需要每次都更改基本 url,这很烦人。
那么,有没有一种方法可以根据环境,在 Symfony2 的配置中动态检测基本 url,而不依赖于请求呢?
我必须在服务中执行此操作,因此我将路由器服务注入到我自己的服务中,然后:
$baseUrl = $router->getContext()->getHost();
但我更多地认为它是一种 hack,而不是 Symfony2 框架的真正固定装置。例如,在 Controller 中,您可以轻松生成绝对 url(来自 symfony 书中的示例):
$router->generate('blog_show', array('slug' => 'my-blog-post'), true);
在 twig 模板中,您有 {{ url }} 函数
我希望这有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)