2016-02-02 110 views
0

我感动我的网站所有的公众形象到一个文件夹出的symfony的Web文件夹中,因此它可以与其他Web应用程序共享获取图像文件夹URI。 我创建了一个符号链接到这个文件夹,所以它可以从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服务器的生产环境中的本地主机以及上的我的开发环境中检索图像URI。

我希望能够从控制器的树枝模板中检索此URI。

基本上(我application_01为例):

开发环境它将返回:

http://localhost/images/my_image.jpg 

生产环境,它将返回:

http://www.application_01.com/images/my_image.jpg 

我的问题是,我发现许多不同的方式来获取URI bu t我不完全清楚Symfony如何管理它们,以及在所有情况下使用什么函数来实现全局解决方案。

什么是实现我目标的最佳方式是什么?


编辑

具体来说,我发现了一些SO答案,建议使用下列功能相当类似的问题:

$请求 - > getScheme(); $ request-> getHttpHost();

这似乎对应值或超全局$ _ SERVER [“REQUEST_SCHEME”]和$ _ SERVER [“HTTP_HOST”]

而且我不知道这是否是得到,因为这此信息的正确方法链接到服务器接收到的当前请求。

是不是有另一种方式从当前服务器处理请求独立得到这个信息?

回答

1

定义以下网址

IMAGE_URL: 路径:/图像/ {图片}

然后使用它像这样

/** @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/

+0

完善,这个工程。我只是测试它。只需要一分钟即可了解第二行。这实际上是一个放入路由配置文件的定义。谢谢你的帮助。这并不困难,但我无法亲自指点解决方案。 – Nitseg

+0

我不能发布另一个问题,因为这个问题太近了,但我有一个问题。由于图像路径包含从图像名称本身推导出的子文件夹(a12f23.jpg存储在/ 01/2f /子文件夹中)Symfony不接受我的'图像'参数。它不接受图像名称中的特殊“/”字符(/01/2f/012f23.jpg)。任何线索如何让Symfony接受这种图片名称嵌入子文件夹? – Nitseg

+0

@Nitseg http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html 谷歌是你的朋友;) – Moein