本文主要是介绍php Smarty模板大括号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用 Smarty 模板的时候,通常都是用 ‘{’ 和 ‘}’ 作为定界符(delimiter)。
有时,我们需要在 html 代码里输出大括号,如果在模板里直接写出来,会被 Smarty 的解析器认为是定界符,然后会报错:
Smarty error : syntax error: unrecognized tag
无法识别的标签!
如何解决呢?
1 内置变量
在需要使用定界符的时候,可以通过 {ldelim},{rdelim}标签,或者 {$smarty.ldelim},{$smarty.rdelim}的变量来使用。
2 文本转义
我们经常会在 html 里写 javascript 函数,就不可避免地写大量的大括号,这个时候上面的解决方法就不适用了,Smarty 提供了一个转义一段代码的标签:{literal}…{/literal}
{literal}
{/literal}
3 修改默认定界符
<?php$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
$smarty->display('example.tpl');?>
Smarty的默认定界符{ 和 }可以整齐地界定一般内容的显示。 然而你可以通过修改Smarty的 $left_delimiter 和 $right_delimiter 的变量值,设置更适合的定界符。
修改定界符会影响到全部模板代码和解析,请确保在修改前已清除了全部的缓存和编译文件。
4 加空格
在Smarty 3的模板中,如果‘{’和‘}’大括号里包含有空格,那么整个{}内容会被忽略,当然我们可以设置Smarty类变量$auto_literal=false来取消这种规则。【经测试,只要 { 后面有空格,就不会被解析】
参考:
Smarty 定界符 花括号 大括号 函数定义 转义
http://blog.csdn.net/sunlylorn/article/details/6319556
忽略Smarty解析
https://book.2cto.com/201305/22650.html
避免Smarty解析
https://www.smarty.net/docs/zh_CN/language.escaping.tpl
在php模板引擎smarty下输出大括号
http://blog.csdn.net/skfzc/article/details/48341375
这篇关于php Smarty模板大括号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!