#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 как администратор 😉