如何在symfony2中使用资产及更少的twitter bootstrap?

时间:2013-09-23 22:30:16

标签: twitter-bootstrap symfony less assetic

我无法启动Twitter bootstrap。我知道有许多教程等等,但它们都不适用于我......

我的composer.json是:

"require":
    [...]
    "leafo/lessphp": "dev-master",
    "braincrafted/bootstrap-bundle": "dev-master",
    "twbs/bootstrap": "2.3.*"

我的资产配置是:

# Assetic Configuration
assetic:
    filters:
        lessphp:
            file: %kernel.root_dir%/../vendor/leafo/lessphp/lessc.inc.php
            apply_to: "\.less$"
        cssrewrite: ~
    assets:
        bootstrap_css:
            inputs:
                - %kernel.root_dir%/../vendor/twbs/bootstrap/less/bootstrap.less
                - %kernel.root_dir%/../vendor/twbs/bootstrap/less/responsive.less
            filters:
                - lessphp
                - cssrewrite
            output: css/bootstrap.css
        bootstrap_js:
            inputs:
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-transition.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-alert.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-button.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-carousel.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-collapse.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-dropdown.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-modal.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-tooltip.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-popover.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-scrollspy.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-tab.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-typeahead.js
                - %kernel.root_dir%/../vendor/twbs/bootstrap/js/bootstrap-affix.js
            output: js/bootstrap.js

最后::base.html.twig

{% block stylesheets %}
    <link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}">
{% endblock %}

{% block javascripts %}
    <script src="{{ asset('js/bootstrap.js') }}"></script>
{% endblock %}

我尝试用不同的方式包含js ans css,例如:

{% stylesheets '%kernel.root_dir%/../vendor/twbs/bootstrap/less/bootstrap.less' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

{% stylesheets '@bootstrap_css' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

但它仍然无效,我为bootstrap.css和bootstrap.js收到404错误。

我的配置有什么问题?我在Windows 7 64bit上使用wamp服务器。

使其正常工作的唯一方法是使用cli命令assetic:dump,但我认为在开发环境中执行此操作并不正确。

3 个答案:

答案 0 :(得分:5)

最后我使用了bootstrap中的js和css文件,没有symfony中的任何包,因为它更快,更容易并且可能有一些优点,例如任何更新引导程序都不会使我的站点崩溃(请参阅update bootstrap 2到3)。 ..)。

感谢所有人的回答,但这对我来说是最好的解决方案。

答案 1 :(得分:1)

所以这是您问题的最终答案:

由于性能影响,您必须手动运行它。否则,如果您使用多个过滤器,则加载应用程序需要很长时间,这可能会非常令人沮丧。

在旧版本的symfony中,它似乎是自动完成的,但现在已经删除了。

请参阅文档:http://symfony.com/doc/current/cookbook/assetic/asset_management.html#dumping-asset-files-in-the-dev-environment

所以您的代码和配置一切正常。

答案 2 :(得分:0)

尝试将此添加到config_dev.yml:

assetic:
    use_controller: true