将引导程序添加到symfony应用程序的正确方法是什么?

时间:2016-04-06 13:45:12

标签: twitter-bootstrap twig composer-php symfony

我使用symfony框架3来开发Web应用程序。我需要在我的应用程序中添加boostrap的功能。我使用下面的命令安装了bootstrap。 (我使用作曲家。)

composer require twbs/bootstrap

它将bootstrap安装到应用程序的供应商文件夹中。更具体地说是vendor\twbs\bootstrap

我需要在应用程序的twig模板(位于css)中附加bootstrap的jsapp\Resources\views个文件作为资产。

e.g:

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

但资产仅适用于位于网络(web\bundles\framework)文件夹中的文件。我可以手动将这些.css.js文件从供应商文件夹复制到web文件夹以使其工作,但应该有一个正确的方法(即:添加资产)。例如:bin/console的命令?

感谢任何帮助。

6 个答案:

答案 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