2016-02-02 109 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