0

SonataMediaBundle 中的缩略图是什么意思,它是一个图像,缓存中的图像,图像调整大小?特别是在模板中:

渲染缩略图有什么区别:

{% thumbnail media, 'small' %}

和 :

{% media media, 'small' %}

它渲染相同的东西,即图像!

谢谢!

4

1 回答 1

1

理解这种疑惑最好的办法就是看源码;

媒体
https://github.com/sonata-project/SonataMediaBundle/blob/master/Twig/Extension/MediaExtension.php#L69

缩略图
https://github.com/sonata-project/SonataMediaBundle/blob/master/Twig/Extension/MediaExtension.php#L123

模板
https ://github.com/sonata-project/SonataMediaBundle/blob/master/Resources/views/Provider/thumbnail.html.twig

从模板文件夹中可以看到:
thumbnail.html.twig

<img {% for name, value in options %}{{name}}="{{value}}" {% endfor %} />

缩略图扩展显示媒体的缩略图

相反,根据您要查看的媒体,媒体扩展将加载适当的模板(view_dailymotion.html.twig、view_file.html.twig、view_image.html.twig、view_vimeo.html.twig、view_youtube.html.twig)展示“真实”的媒体

如果媒体是图片,则两者的结果相同

{% thumbnail media, 'small' %}  

{% media media, 'small' %}  

view_image.html.twig的模板实际上是:

<img {% for name, value in options %}{{ name }}="{{ value }}" {% endfor %} />

相反,如果媒体是 youtube 媒体
view_youtube.html.twig

{% if options.html5 %}
    <iframe width="{{ options.player_parameters.width }}" height="{{ options.player_parameters.height }}" src="//www.youtube.com/embed/{{ media.providerreference }}?{{ options.player_url_parameters }}" frameborder="{{ options.player_parameters.border }}"{% if options.player_parameters.allowFullScreen %} allowfullscreen{% endif %}></iframe>
{% else %}
    {% if options.player_parameters.allowFullScreen %}
        {% set allowFullScreen = "true" %}
    {% else %}
        {% set allowFullScreen = "false" %}
    {% endif %}
    <object width="{{ options.player_parameters.width }}" height="{{ options.player_parameters.height }}">
        <param name="movie" value="//www.youtube.com/v/{{ media.providerreference }}?{{ options.player_url_parameters }}"></param>
        <param name="allowFullScreen" value="{{ allowFullScreen }}"></param>
        <param name="allowscriptaccess" value="{{ options.player_parameters.allowScriptAccess }}"></param>
        <param name="wmode" value="{{ options.player_parameters.wmode}}">

        <embed
            src="//www.youtube.com/v/{{ media.providerreference }}?{{ options.player_url_parameters }}"
            type="application/x-shockwave-flash"
            allowscriptaccess="{{ options.player_parameters.allowScriptAccess }}"
            allowfullscreen="{{ allowFullScreen }}"
            width="{{ options.player_parameters.width }}"
            height="{{ options.player_parameters.height }}"
            wmode="{{options.player_parameters.wmode}}">
        </embed>
    </object>
{% endif %}
于 2014-07-15T15:09:07.567 回答