我使用symfony框架3来开发Web应用程序。我需要在我的应用程序中添加boostrap的功能。我使用下面的命令安装了bootstrap。 (我使用作曲家。)
composer require twbs/bootstrap
它将bootstrap安装到应用程序的供应商文件夹中。更具体地说是vendor\twbs\bootstrap
。
我需要在应用程序的twig模板(位于css
)中附加bootstrap的js
和app\Resources\views
个文件作为资产。
e.g:
<link href="{{ asset('css/bootstrap.css') }}" rel="stylesheet" />
但资产仅适用于位于网络(web\bundles\framework
)文件夹中的文件。我可以手动将这些.css
和.js
文件从供应商文件夹复制到web文件夹以使其工作,但应该有一个正确的方法(即:添加资产)。例如:bin/console
的命令?
感谢任何帮助。
答案 0 :(得分:8)
看起来这在Symfony3中不再有效。
在Symfony3中,以下内容应该有效:
twig:
form_themes: ['bootstrap_3_layout.html.twig']
答案 1 :(得分:5)
Symfony Best Practies为这个问题提供了答案:http://symfony.com/doc/current/best_practices/web-assets.html
如果您正在开发这样的应用程序,则应使用该技术推荐的工具,例如Bower和GruntJS。您应该从Symfony后端单独开发前端应用程序(如果需要,甚至可以分离存储库)。
在我们的项目中,我们使用grunt构建这些文件并将其连接到web文件夹中。
答案 2 :(得分:3)
由于Symfony v2.6包含为 Bootstrap 3 oficial documentation设计的新表单主题
# app/config/config.yml
twig:
form:
resources: ['bootstrap_3_layout.html.twig']
# resources: ['bootstrap_3_horizontal_layout.html.twig']
答案 3 :(得分:3)
通过此链接https://coderwall.com/p/cx1ztw/bootstrap-3-in-symfony-2-with-composer-and-no-extra-bundles(并更改twitter
的{{1}}),这就是我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
或Leafo的scss处理器,jsqueeze
等等。我在我的作曲家文件中有这个:
jquery
然后我将它用于css:
"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",
并且对于javascripts,首先放置{% 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 %}
:
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 %}
来编译我的所有资产。
希望能帮到你!
答案 4 :(得分:1)
作为替代解决方案,可以在更新包时自动创建符号链接。例如,在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"
]
},
答案 5 :(得分:1)
从Symfony版本4开始建议的方法changed:Webpack Encore与npm / yarn一起使用,用于捆绑CSS和JavaScript资源,可以在其中包含Bootstrap框架。
从installing Encore开始,然后从the Bootstrap-specific documentation开始。总之,必须执行以下命令:
composer require encore
yarn install
yarn add bootstrap --dev
# after making the required changes to webpack.config.js, app.js, run Encore
yarn encore dev --watch