2014-10-30 127 views
1

我想要檢索圖像的src URL。控制器中的Symfony2圖像路徑

{% image "@AcmeMyBundle/Resources/public/image/myimage.jpg" %} 
    <img src={{ asset_url }} 
{% endimage %} 

我該如何獲得控制器內的asset_url

例如http://example.com/images/c1ca79c_myimage.jpg

甚至images/c1ca79c__myimage.jpg 我想:

$this->container 
    ->get('templating.helper.assets') 
    ->getUrl('@AcmeMyBundle/Resources/public/image/myimage.jpg'); 

但這返回字符串/@AcmeMyBundle/Resources/public/image/myimage.jpg,而不是一個URL。

+0

你需要'src' URL還是文件系統中的絕對路徑? – dmnptr 2014-10-30 19:16:50

+0

用於外部鏈接的SRC URL,而不是文件系統。 – Tek 2014-10-30 19:37:05

+0

只是好奇於在控制器中需要什麼用例? – Chausser 2014-10-30 23:44:06

回答

1

其他答案很接近。我真正想要的是:

$this 
    ->get('templating.name_parser') 
    ->parse('@AcmeBundle/Resources/dart/AcmeMain/web/main.dart') 
    ->getPath() 

就像我在我的問題問我想用@註解。

+0

這仍然會產生@註釋。你能建議如何獲取網址! – cj5 2016-05-06 23:56:20

1

你可以只用小樹枝資產幫手:

$twig = clone $this->get('twig'); 
$twig->setLoader(new \Twig_Loader_String()); 
$rendered = $twig->render(
    '{{ app.request.getSchemeAndHttpHost ~ asset("bundles/acmemy/image/myimage.jpg") }}' 
); 
//Outputs - http://example.com/acmemybundle/images/myimage.jpg 

或者你甚至應該能夠做到:

$twig = clone $this->get('twig'); 
$twig->setLoader(new \Twig_Loader_String()); 
$rendered = $twig->render(
    '{% image "@AcmeMyBundle/Resources/public/image/myimage.jpg" %} 
    {{ asset_url }} 
    {% endimage %}' 
); 
+0

不太漂亮,但它的作品... – mika 2015-08-04 15:38:13

4

你有沒有嘗試過這樣的:

$this->container 
->get('templating.helper.assets') 
->getUrl('bundles/acmemy/public/image/myimage.jpg'); 
1

它不是在symfony的3個工作了

在symfony中使用3

$this->container->get('assets.packages')->getUrl($path); 

例。

private function getAssets($path) 
{ 
    return $this->container->get('assets.packages')->getUrl($path); 
} 

$this->getAssets(...your path...); 
相關問題