从控制器和twig模板获取图像文件夹URI

时间:2016-02-02 19:47:48

标签: php symfony uri symfony-2.3

我将网站的所有公共图片移到了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']

我不知道这是否是获取此信息的正确方法,因为它与服务器收到的当前请求相关联。

是否有其他方法可以独立于服务器当前处理的请求获取此信息?

1 个答案:

答案 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/