Sonata Media Bundle : acces media url

前端 未结 5 2032
小蘑菇
小蘑菇 2021-01-02 01:09

I am using sonata media bundle.

and I was wondering how can I access the media url in twig.
I just want the url, I do not need to show the media.

Any sug

5条回答
  •  感动是毒
    2021-01-02 01:53

    But if you do not want to render the media right there and just store the url in a variable, you need to ask the media provider for the public url. This was my case, that I needed to pass the url to another template. I did it creating a custom function in my Twig Extension (see here: http://symfony.com/doc/current/cookbook/templating/twig_extension.html).

    Provided that you have the container available in your extension service with $this->container, you can do like this:

    public function getMediaPublicUrl($media, $format)
    {
        $provider = $this->container->get($media->getProviderName());
    
        return $provider->generatePublicUrl($media, $format);
    }
    

    Register the function in the extension:

    public function getFunctions() {
         ....
        'media_public_url' => new \Twig_Function_Method($this, 'getMediaPublicUrl'),
         ....
        );
    }
    

    And call your new helper form your template:

    {% set img_url = media_public_url(media, 'small') %}
    

    for instance

    regards

提交回复
热议问题