Куда поместить основные ресурсы в Symfony2?

#php #symfony

#php #symfony

Вопрос:

Я начал создавать веб-сайт с помощью Symfony2, и у меня возникли небольшие затруднения с ресурсами.

В книге Symfony2 говорится, что каждый файл ресурсов должен быть в комплекте, но как насчет наиболее важных изображений, файлов .js и .css, которые я использую в базовом файле.html.twig на каждой странице?

Должен ли я создать CoreBundle или что-то подобное, только для этих файлов, или я должен поместить их в папку app Resources (или, может быть, непосредственно в веб-папку)? Если я могу использовать для них папку app Resources, как я могу ссылаться на эти файлы из шаблона?

Создание пакета только для этого кажется немного излишним, и URL-адреса ресурсов для этих файлов тоже уродливы (например, ‘/bundles/projectcore/images/logo.jpg ‘) по моему мнению.

Какова наилучшая практика здесь?

Ответ №1:

У меня были ситуации, когда я хранил все файлы в /web (т. Е. /web/js) и другие, где я хранил их в пакете «Assets».

Если вы разрабатываете пакет, который будет использоваться повторно во многих проектах, имеет смысл хранить ресурсы в этом пакете. Я думаю, что затем вы бы опубликовали / установили эти ресурсы в веб-папку с помощью командной строки. Например, допустим, у вас есть BlogBundle, для которого требуется определенный css. Вы бы сохранили css в этом пакете, чтобы в следующий раз, когда вы будете использовать BlogBundle для проекта, вы могли бы легко повторно использовать css.

Как и во многих других вещах с Symfony2, ваши личные предпочтения играют большую роль в этих решениях. Я рекомендую придерживаться того, где вы храните свои ресурсы. Необходимость управления активами, разделенными в трех разных местах (web, AssetsBundle, другие пакеты), может стать большой головной болью. Поэтому выберите местоположение и постарайтесь оставаться последовательным.

Что касается доступа к ресурсам из приложения / ресурсов… возможно, вы сможете использовать Assetic для этого. Я не очень хорошо знаком с этим, но я считаю, что вы можете загружать ресурсы из любого места в вашем проекте. На самом деле я бы рекомендовал взглянуть на код основных ресурсов (look in vendorAssetic ) вместо помощника Symfony2 Assetic, потому что вы получите лучшее представление о том, что возможно.

Комментарии:

1. Я думаю, что я сделаю этот AssetsBundle для хранения этих ресурсов, это все равно удобнее, чем помещать их все в веб-папку (особенно, если я хочу повторно использовать эти ресурсы в другом проекте). Спасибо за ответ!

Ответ №2:

Мы использовали символическую ссылку в Linux, чтобы /web/bundles/projectcore/images указывал на src/Bundle/Resources/public/images

С Subversion в Netbeans это работает. Приятно то, что все ваше приложение остается в папке /src/ Bundle

Комментарии:

1. Для полноты картины этого можно достичь, запустив php app/console assets:install web --symlink в вашем каталоге проекта Symfony2.

2. Я на Windows, поэтому символическая ссылка для меня не подходит 🙂 В любом случае, спасибо!

3. @Inori Да, но вы должны открыть CMD как администратор 😉