控制器中的Symfony2图像路径

时间:2014-10-30 18:57:14

标签: symfony assetic

我想要检索图片的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。

4 个答案:

答案 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...);