vir*_*rhi 11 symfony twig sonata-admin
我正在使用奏鸣曲媒体包.
我想知道如何在树枝上访问媒体网址.
我只想要网址,我不需要向媒体展示.
有什么建议?
Fra*_*ula 14
您必须使用路径媒体助手:
{% path media, 'small' %}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,media是媒体实体的实例,并且small是所选择的格式.
http://sonata-project.org/bundles/media/master/doc/reference/helpers.html#twig-usage
jav*_*gzz 11
但是,如果您不想在那里呈现媒体并将URL存储在变量中,则需要向媒体提供商询问公共URL.这是我的情况,我需要将URL传递给另一个模板.我在我的Twig Extension中创建了一个自定义函数(参见http://symfony.com/doc/current/cookbook/templating/twig_extension.html).
如果您的扩展服务中有容器$this->container,您可以这样做:
public function getMediaPublicUrl($media, $format)
{
$provider = $this->container->get($media->getProviderName());
return $provider->generatePublicUrl($media, $format);
}
Run Code Online (Sandbox Code Playgroud)
在扩展中注册该功能:
public function getFunctions() {
....
'media_public_url' => new \Twig_Function_Method($this, 'getMediaPublicUrl'),
....
);
}
Run Code Online (Sandbox Code Playgroud)
并从您的模板中调用您的新助手:
{% set img_url = media_public_url(media, 'small') %}
Run Code Online (Sandbox Code Playgroud)
例如
问候
小智 7
@javigzz在默认情境下是完美的.我使用自定义上下文,所以不得不首先考虑上下文名称来处理$格式:
$provider = $this->container->get($media->getProviderName());
$format = $provider->getFormatName($media, $format);
$url = $provider->generatePublicUrl($media, $format);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16463 次 |
| 最近记录: |