我正在使用Smarty进行服务器端模板,我想使用Handlebars.js进行客户端模板,但是Smarty出错了,因为把手使用了与Smarty相同的花括号。我可以在Smarty的文字标签中编写Handlebar模板,但这次我不能在Handlebar模板中使用Smarty。
例如:我为cleanurl编写了一个聪明的块函数。我不想为javascript.So编写一个清理use函数,我想同时使用Smarty和Handlebars.js。
<div class="model-item" id="model-{{id}}">
<a href="{$mainurl}{cu}?com=model&act=view&id={{id}}{/cu}"> {{name}} </a>
</div>发布于 2012-08-02 03:14:03
您还可以更好地使用文字tags...much而不是转义每个大括号。
{literal}
<script id="entry-template" type="text/x-handlebars-template">
{{any_var}}
</script>
{/literal}发布于 2012-06-06 20:35:08
http://www.smarty.net/docs/en/language.escaping.tpl
文档的这一部分讨论转义。我认为"{ldelim},{rdelim}“可能就是你所看到的for...although,它使得代码的可读性降低了一点……
发布于 2018-11-11 11:33:04
我知道这是一个老问题,但现在这是一个受支持的智能特性。(我在寻找同样的问题时偶然发现了你的问题,所以我想回答这个问题,以防其他人也有同样的问题)
如果添加以下内容:
$smarty->setLiterals(array('{{{','}}}','{{','}}'));
Smarty现在将忽略胡须和车把的所有双倍和三倍分隔。注意:在启用之前,必须检查现有的smarty模板是否有任何合法的smarty使用{{或{,并在设置后重新编写代码,这些现在是文字,它们将不再用作smarty语句。
https://github.com/smarty-php/smarty/issues/508#issuecomment-437640751
此版本为3.1.32版
https://stackoverflow.com/questions/10913803
复制相似问题