Как правильно добавить bootstrap в приложение symfony?
я использую symfony framework 3 для разработки веб-приложения. Мне нужно добавить функциональность boostrap в мое приложение. Я установил Bootstrap, используя следующую команду. (Я использую composer.)
composer require twbs/bootstrap
он устанавливает bootstrap в папку поставщика приложения. Более конкретно vendortwbsbootstrap
.
мне нужно прикрепить bootstrap css
и js
файлы в шаблонах twig приложения (находится в appResourcesviews
) в качестве активов.
например:
<link href="{{ asset('css/bootstrap.css') }}" rel="stylesheet" />
но активы работают только с файлами, расположенными в интернете (webbundlesframework
папку). Я могу скопировать их .css
и .js
файлы из папки поставщика в веб-папку вручную, чтобы сделать эту работу, но должен быть правильный способ сделать это (т. е. добавить активы). например: команда с bin/console
?
любая помощь приветствуется.
5 ответов
Symfony Best Practices дает ответ на эту проблему:http://symfony.com/doc/current/best_practices/web-assets.html
Если вы разрабатываете такое приложение, вы должны использовать инструменты, рекомендованные технологией, такие как Bower и GruntJS. Вы должны разработать приложение frontend отдельно от вашего бэкэнда Symfony (даже разделяя репозитории, если хотите).
в нашем проекте мы используем ворчать, чтобы построить и объединить эти файлы в веб-папку.
похоже, что это больше не работает в Symfony3.
в Symfony3 должно работать следующее:
twig:
form_themes: ['bootstrap_3_layout.html.twig']
по этой ссылке https://coderwall.com/p/cx1ztw/bootstrap-3-in-symfony-2-with-composer-and-no-extra-bundles (и меняется twitter
на twbs
) это то, что у меня есть в моем config.yml
:
assetic:
debug: '%kernel.debug%'
use_controller: '%kernel.debug%'
filters:
cssrewrite: ~
jsqueeze: ~
scssphp:
formatter: 'Leafo\ScssPhp\Formatter\Compressed'
assets:
jquery:
inputs:
- %kernel.root_dir%/../vendor/components/jquery/jquery.js
bootstrap_js:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/js/bootstrap.js
bootstrap_css:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/css/bootstrap.css
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/css/bootstrap-theme.css
filters: [ cssrewrite ]
bootstrap_glyphicons_ttf:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf
output: "fonts/glyphicons-halflings-regular.ttf"
bootstrap_glyphicons_eot:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/fonts/glyphicons-halflings-regular.eot
output: "fonts/glyphicons-halflings-regular.eot"
bootstrap_glyphicons_svg:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
output: "fonts/glyphicons-halflings-regular.svg"
bootstrap_glyphicons_woff:
inputs:
- %kernel.root_dir%/../vendor/twbs/bootstrap/dist/fonts/glyphicons-halflings-regular.woff
output: "fonts/glyphicons-halflings-regular.woff"
у меня есть другие зависимости, в своей composer.json
как jsqueeze
например, или процессор scss Leafo, среди jquery
и многое другое. У меня есть это в моем файле композитора:
"components/font-awesome": "^4.7",
"components/jquery": "^3.1"
"leafo/scssphp": "^0.6.7",
"patchwork/jsqueeze": "^2.0",
"symfony/assetic-bundle": "^2.8",
"twbs/bootstrap": "^3.3",
затем я использую его так для css:
{% stylesheets
'@bootstrap_css'
'my/other/scss_file1.scss'
'my/other/scss_file2.scss'
filter='scssphp,cssrewrite'
output='css/HelloTrip.css' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet"/>
{% endstylesheets %}
и для javascripts, место jquery
первый:
{% javascripts
'@jquery'
'@bootstrap_js'
'my/other/js_file1.js'
'my/other/js_file2.js'
filter='?jsqueeze'
output='js/HelloTrip.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
я тогда использую bin/console assetic:dump
для компиляции всех моих активов.
надеюсь на помощь!
начиная с Symfony v2.6 включает в себя новую тему формы, предназначенную для Bootstrap 3 документация Офичиал
# app/config/config.yml
twig:
form:
resources: ['bootstrap_3_layout.html.twig']
# resources: ['bootstrap_3_horizontal_layout.html.twig']
в качестве альтернативного решения, ссылки могут быть созданы автоматически при обновлении пакетов. Например, в composer.json
добавить новую команду в "post-update-cmd"
:
// ...
"scripts": {
"post-install-cmd": [
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts",
"rm web/bootstrap && ln -s -r `pwd`/vendor/twbs/bootstrap/dist/ web/bootstrap"
]
},