Каков наилучший способ включить проект jQuery для symfony с использованием composer и активов

У меня установлен JQuery с композитором.

Теперь JQuery находится в vendor/components/jquery каталог.

Я пытался включить это в /app/config/config.yml

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    filters:
        cssrewrite: ~
    assets:
        jquery: %kernel.root_dir%/../vendor/components/jquery/jquery.min.js

Если я запускаю команду:

php app/console assetic:dump

я получил

[RuntimeException]                                                                                                              
  The source file "/home/user/project/app/current/app/../web/vendor/components/jquery/jquery.min.js" does not exist.

Причина, по которой сборщик все еще смотрит в /web/ каталог, который является неправильным. Как я могу изменить это так, чтобы это выглядело в /vendor/ каталог? Кроме того, я не хочу помещать файлы jquery в общедоступную папку комплектов, так как это может нарушить весь смысл получения правильных версий библиотек вендора через composer.

2 ответа

Решение

Я не большой поклонник установки jquery в каталоге vendor в Symfony, так как это не библиотека PHP. Композитор и vendor Каталог должен использоваться только для зависимостей PHP. Вы должны отделить часть внешнего интерфейса от части внутреннего интерфейса. Все js, css и другие активы должны идти куда-то еще.

Поэтому у вас есть 2 варианта:

  1. Если вы хотите иметь отдельные ресурсы для каждого пакета, поместите ваши ресурсы, которые вы используете для внешнего интерфейса, в публичный каталог вашего пакета: например, поместите свой jquery.min.js в Resources/public/js папка вашего комплекта.

Затем запустите команду php app/console assets:install, это скопирует ваши файлы js в web/bundles/yourbundle/js/ каталог.

Наконец использовать <script type="text/javascript" src="{{ asset('yourbundle/js/jquery.min.js') }}"></script> в ваш файл ветки, чтобы добавить jquery.

  1. Если у вас есть общие ресурсы для всех ваших пакетов, поместите их непосредственно в web папка, например: web/js, web/css, web/img... а потом пользуйся <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script> в вашем шаблоне ветки.

Следуя ссылкам из комментариев и повторяя другие ответы, это было довольно легко. Все пропало было

composer require robloach/component-installer

больше информации о robloach/component-installer

Затем добавьте эту строку вручную composer.json

"config": {
    #...
    "component-dir": "web/assets",
    #...
},

Предполагается, что у вас уже есть

composer require components/jquery

Возможно, вам придется повторить команду

composer install

Теперь он создаст каталог /web/assets/jquery со всеми файлами, которые будут легко включены.

Другие вопросы по тегам