【发布时间】:2013-03-14 21:40:46
【问题描述】:
我想从我的 twig 文件中排除我的 handlebars.js 模板。
所以我在public 文件夹中创建了一个名为hbs 的新目录,其中放置了所有车把模板。我如何告诉资产渲染这些模板并用脚本标签包装它?
【问题讨论】:
标签: symfony-2.1 handlebars.js assetic
我想从我的 twig 文件中排除我的 handlebars.js 模板。
所以我在public 文件夹中创建了一个名为hbs 的新目录,其中放置了所有车把模板。我如何告诉资产渲染这些模板并用脚本标签包装它?
【问题讨论】:
标签: symfony-2.1 handlebars.js assetic
您需要 AsseticBundle 2.1.2 或更高版本。除此之外,您还需要做三件事:
安装编译器
关注instructions on the handlebars website。或者,更短:
npm install handlebars -g
配置过滤器
将此添加到您的配置文件中:
assetic:
filters:
handlebars:
apply_to: "\.handlebars$"
这将告诉assetic 将handlebars 过滤器应用于所有以“.handlebars”结尾的文件,有效地将它们转换为已编译的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”。
希望对您有所帮助...
【讨论】:
/usr/bin/node 不同的位置(例如,如果您通过官方安装程序将其安装在 Mac OS X 上,则在 /usr/local/bin/node 中),您需要添加 @987654328 @handlebars资产过滤器配置。
您可以在 bin 中放置正确的车把路径。以下对我有用。
assetic:
filters:
handlebars:
apply_to: "\.handlebars"
bin: /usr/local/bin/handlebars
使用获取车把的正确位置
which handlebars
【讨论】: