我想要检索图片的src
网址。
{% image "@AcmeMyBundle/Resources/public/image/myimage.jpg" %}
<img src={{ asset_url }}
{% endimage %}
我如何获得控制器内的asset_url
?
e.g。 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 :(得分:4)
你试过这个:
$this->container
->get('templating.helper.assets')
->getUrl('bundles/acmemy/public/image/myimage.jpg');
答案 1 :(得分:1)
您可以使用twig资产助手:
$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 %}'
);
答案 2 :(得分:1)
其他答案很接近。我真正想要的是:
$this
->get('templating.name_parser')
->parse('@AcmeBundle/Resources/dart/AcmeMain/web/main.dart')
->getPath()
就像我在问题中提到的那样,我想使用@
注释。
答案 3 :(得分: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...);