Symfony:奏鸣曲媒体文件预览

Posted

技术标签:

【中文标题】Symfony:奏鸣曲媒体文件预览【英文标题】:Symfony : Sonata Media file preview 【发布时间】:2017-11-17 14:15:14 【问题描述】:

我在一个 Symfony 项目中工作,其中包含奏鸣曲捆绑包(管理和媒体)。我需要显示文件预览 - PDF 文件 - (下载文件的链接或在新标签中显示的链接)。 我搜索了很多没有好的解决方案。 这是configureListFields中的字段:

->add('cv', null, array('template' => 'admin:list_image.html.twig'))

这是twig 模板代码:

% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %
% block field %
    <div>
        % if object.cv != null %
            <img src=" object.cv.path ">
        % else %
            <span>No picture</span>
        % endif %
    </div>
% endblock %

【问题讨论】:

需要渲染链接还是预览(图片)? cv 对象长什么样子? 不,我需要为 pdf 文件呈现链接 【参考方案1】:

最后我通过更改模板找到了解决方案。

这是我的管理类

protected function configureListFields(ListMapper $listMapper)

    $listMapper->add('cv', null, array(
        'template' => 'admin/list_field_cv.html.twig'
    ));

这是我的自定义模板

% extends admin.getTemplate('base_list_field') %

% block field %
    % if value %
        % set route_name = field_description.options.route.name %
        % if not field_description.options.identifier|default(false) and
        field_description.hasAssociationAdmin and
        field_description.associationadmin.hasRoute(route_name) and
        field_description.associationadmin.hasAccess(route_name, value) %
            <div class="btn-group">

                <a class="btn btn-default btn-sm btn-block"
                   href=" field_description.associationadmin.generateObjectUrl(route_name, value, field_description.options.route.parameters) ">
                     value|render_relation_element(field_description)  : to media
                </a>
                <a class="btn btn-info btn-sm btn-block"
                   href=" path('sonata_media_download', 'id': (object.cv.id)) ">
                     value|render_relation_element(field_description)  : Télécharger
                </a>
                <a class="btn btn-link btn-sm btn-block"
                   href="% path object.cv,'reference' %">
                     value|render_relation_element(field_description)  :  Ouvrir
                </a>

            </div>
        % else %
             value|render_relation_element(field_description) 
        % endif %
    % endif %
% endblock %

希望对你有帮助。

【讨论】:

是的,确实有帮助!感谢您分享您的解决方案。

以上是关于Symfony:奏鸣曲媒体文件预览的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 Sonata 媒体包:在没有奏鸣曲管理员的情况下保存媒体文件图像

为啥升级到 Symfony 4.4 后我不再看到错误预览页面?

将 symfony 2.8 更新到 3.* ,奏鸣曲错误

Symfony 4 中的奏鸣曲媒体包模板

Symfony 3.2.7 和奏鸣曲媒体包安装

如何在 symfony 中覆盖奏鸣曲媒体包的默认上传路径?