使用symfony 2.1和Assetic管理和包含Handlebars.js文件

Joh*_*auß 6 handlebars.js assetic symfony-2.1

我想从我的twig文件中排除我的handlebars.js模板.

所以我在public名为的文件夹中创建了一个新目录hbs,我放置了所有的车把模板.如何告诉assetic呈现这些模板并用脚本标记包装它?

小智 9

您需要AsseticBundle 2.1.2或更高版本.除此之外,你需要做三件事:

  1. 安装把手编译器
  2. 配置资产过滤器以编译手柄模板
  3. 在模板模板中包含模板.

安装编译器

按照车把网站上说明操作.或者,更短:

npm install handlebars -g
Run Code Online (Sandbox Code Playgroud)

配置过滤器

将其添加到您的配置文件中:

assetic:
    filters:
        handlebars:
             apply_to: "\.handlebars$"
Run Code Online (Sandbox Code Playgroud)

这将告诉资产者将把手过滤器应用于以".handlebars"结尾的所有文件,有效地将它们变成编译的把手模板.您可以将设置调整为您喜欢的任何结尾.

如果把手编译器不在默认位置(/ usr/bin/handlebars),您可能需要告诉资产.使用把手过滤器的"bin"设置.例如,如果您已将其安装在项目的子目录中(通过使用不带-g选项的npm),您的配置可能如下所示:

assetic:
    filters:
        handlebars:
             apply_to: "\.handlebars$"
             bin: node_modules/handlebars/bin/handlebars
Run Code Online (Sandbox Code Playgroud)

在Twig模板中引用

在twig模板中添加一个新引用,类似于包含javascript文件的方式:

{% javascripts
    '@MyBundle/Resources/public/hbs/*.handlebars'

        output='assets/my-handlebars-templates.js'
        %}
    <script type="text/javascript" src="{{ asset_url }}"></script>  
{% endjavascripts %}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用项目中的模板.它们存储在Handlebars.templates [templatename]中,"template-name"是模板的文件名,不包括".handlebars".

希望有帮助......