我将网站的所有公共图片移到了symfony的web文件夹之外的文件夹中,因此可以与其他Web应用程序共享。 我创建了一个指向该文件夹的符号链接,因此可以从symfony应用程序的web文件夹中访问它。
ln -s /absolute/path/to/images /path/to/symfony/application_01/web/images
ln -s /absolute/path/to/images /path/to/symfony/application_02/web/images
等...适用于所有应用程序。
我正在寻找一种方法,允许我在远程Web服务器上的生产环境中的localhost 以及的开发环境中检索图像URI。
我希望能够从控制器的枝条模板 AND 中检索此URI。
基本上(例如我的application_01):
在开发环境中,它会返回:
http://localhost/images/my_image.jpg
在生产环境中,它会返回:
http://www.application_01.com/images/my_image.jpg
我的问题是我发现了许多不同的获取URI的方法,但我并不完全清楚Symfony如何管理它们以及在所有情况下使用全局解决方案的功能。
实现目标的最佳方式是什么?
修改
具体而言,我发现了一些非常相似的问题的答案,建议使用以下功能:
$请求 - > getScheme(); $请求 - > getHttpHost();
这似乎对应于值$或superglobals $ _SERVER ['REQUEST_SCHEME']和$ _SERVER ['HTTP_HOST']
我不知道这是否是获取此信息的正确方法,因为它与服务器收到的当前请求相关联。
是否有其他方法可以独立于服务器当前处理的请求获取此信息?
答案 0 :(得分:1)
定义以下网址
IMAGE_URL: 路径:/ images / {image}
然后像这样使用它
/** @var Router $router */
$router = $this->get('router');
$url = $router->generate('image_url', ['image' => 'my_image.jpg'], Router::ABSOLUTE_URL);
$ url现在包含图片的绝对网址。当然,这是你能想到的最佳实践:)
-----回答你对app_dev.php的评论 几个月前我们在公司使用过这个解决方案。
preg_replace('#/(.+?)\.php)', '', $router->generate('my_url');
http://techimho.com/index.php/2015/10/15/generate-production-url-in-dev-environment/