значки по умолчанию для типов файлов с SonataMediaBundle

Я использую SonataMediaBundle и не хочу создавать значки для определенных типов файлов (например, pdf, xls, doc). Я хочу использовать значок по умолчанию (например, значок PDF).

Я читал Sonata Media документации, и я полагал, что мне нужно что-то вроде этого:

web/uploads/media/media_bundle/images/default_pdf/file.png or web/uploads/media/sonatamedia/files/default_pdf/file.png

ни чего не работает.

Если <format> означает «маленький» или «большой», я также попробовал это:

web/uploads/media/media_bundle/images/default_small/file.png

что, как я предполагал, будет означать, что file.png будет отображаться для каждого файла, независимо от типа MIME, если требуется маленький значок, а экземпляр файла не имеет пользовательского. Я также пытался использовать admin вместо default в качестве контекста. Нет игральных костей.

Значок src всегда /uploads/media/sonatamedia/files/admin/file.png-, который, будучи абсолютным путем, на самом деле не существует.

Мои файлы значков имеют ширину 45 пикселей, которые я установил в config.yml:

        formats:
            small: { width: 45 , quality: 70}
            big:   { width: 500 , quality: 70}
            pdf: { width: 45 , quality: 70} //tried with and without this line

Права доступа к файлу 644, кеш очищен. Что я делаю не так?


person dnagirl    schedule 12.02.2014    source источник


Ответы (3)


В документах пример конфигурации показывает:

cdn:
    server:
        path: /uploads/media # http://media.sonata-project.org/

мне было нужно

cdn:
    server:
        path: /ACC/web/uploads/media # http://media.sonata-project.org/

потому что базовый URL моего сайта выглядит примерно так: http://example.com/ACC. Надеюсь, это будет полезно другим.

person dnagirl    schedule 25.04.2014

Предполагая, что ваш документ находится в контексте по умолчанию

{% thumbnail media, 'big' %}

даст вам путь к изображению, подобный этому

/uploads/media/sonatamedia/files/default_big/file.png

Вам просто нужно скопировать file.png в /uploads/media/sonatamedia/files/default_big/, и все заработает.

Редактировать: Лично я выбрал CSS.

Шаблон :

<a href="{{ path('sonata_media_download', {'id': media|sonata_urlsafeid }) }}"
class="downloadLink">Download {{media.name}}
</a>

CSS:

.downloadLink{
    margin: 10px;
    padding: 10px 10px 10px 62px;
    background: #fff url(../../bundles/mybundle/images/icons/fileIcon.png) left top no-repeat;
    display: block;
    border: 1px solid #ddd;
    height: 60px;
}
person David Jacquel    schedule 19.03.2014
comment
проблема в том, что src - это абсолютный путь. Если помощник `{%thumbnail%} сгенерирует путь относительно базового URL, все будет готово. - person dnagirl; 19.03.2014

Ага. Он жестко запрограммирован в исходном коде Sonata, например:

// @todo: fix the asset path
$path = sprintf('sonatamedia/files/%s/file.png', $format);
person user2515194    schedule 22.05.2018