6

我想从我的树枝文件中排除我的 handlebars.js 模板。

因此,我在放置所有车把模板的public文件夹中创建了一个新目录。hbs我如何告诉资产渲染这些模板并用脚本标签包装它?

4

2 回答 2

9

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

  1. 安装车把编译器
  2. 配置资产过滤器以编译您的车把模板
  3. 在您的树枝模板中包含模板。

安装编译器

按照车把网站上的说明进行操作。或者,更短:

npm install handlebars -g

配置过滤器

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

assetic:
    filters:
        handlebars:
             apply_to: "\.handlebars$"

这将告诉assetic 将车把过滤器应用于所有以“.handlebars”结尾的文件,从而有效地将它们转换为已编译的车把模板。您可以将设置调整为您喜欢的任何结局。

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

assetic:
    filters:
        handlebars:
             apply_to: "\.handlebars$"
             bin: node_modules/handlebars/bin/handlebars

Twig 模板中的引用

在你的 twig 模板中添加一个新的引用,类似于你将如何包含 javascript 文件:

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

        output='assets/my-handlebars-templates.js'
        %}
    <script type="text/javascript" src="{{ asset_url }}"></script>  
{% endjavascripts %}

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

希望有帮助...

于 2013-04-19T21:46:02.110 回答
0

您可以在 bin 中放置正确的车把路径。以下为我工作。

assetic:
    filters:
        handlebars:
            apply_to: "\.handlebars"
            bin: /usr/local/bin/handlebars

使用获取车把的正确位置

which handlebars
于 2013-11-26T12:25:48.893 回答