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}

function sayHello() {alert('Hello World!')}

{/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Smarty模板引擎的学习笔记,我可以为您提供以下内容: 1. Smarty是什么? Smarty是一个用PHP编写的模板引擎,它将PHP代码与HTML代码分离,使得代码更易于维护和设计。Smarty使用一套模板标签来代替PHP代码,这些标签可以在模板中使用,以生成最终的HTML代码。 2. Smarty的优势 - 简单易用:Smarty模板标签简单易懂,可以快速上手。 - 分离代码:SmartyPHP代码与HTML代码分离,使得代码更易于维护和设计。 - 可扩展性:Smarty支持插件机制,可以方便地扩展和定制功能。 - 性能优化:Smarty支持缓存机制,可以提高页面加载速度。 3. Smarty的基本语法 Smarty模板标签由大括号包围,例如:{tag}。以下是Smarty的一些基本标签: - 输出变量:{$variable} - 条件语句:{if $variable == 'value'}{/if} - 循环语句:{foreach $array as $key => $value}{/foreach} - 引入文件:{include file="filename.tpl"} 4. Smarty的高级功能 - 模板继承:Smarty支持模板继承,可以减少模板重复代码。 - 插件机制:Smarty支持插件机制,可以方便地扩展和定制功能。 - 缓存机制:Smarty支持缓存机制,可以提高页面加载速度。 - 自定义函数:Smarty支持自定义函数,可以方便地扩展其功能。 以上是我为您提供的Smarty模板引擎学习笔记,希望对您有所帮助。如果您有其他问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值