2014-10-30 299 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...);