php模版引擎(smarty3)—优化(定界符,避免和其他语言的冲突)
来源:互联网 发布:mac磁盘权限修复 编辑:程序博客网 时间:2024/05/01 15:36
在smarty3的模版变量中,如{$var},默认{$val}的两边是不能出现空格的,即{ $val }。如果出现空格会报错,
但在smarty2中则允许出现空格。
这样就很容易跟页面嵌入的其他的语言发生冲突,如页面中的:
<style>
body{margin:0;padidng:0;}
p{ color:#000; font-size:14px; }
input{
width:200px;
height:30px;
}
</style>
<script>
function render()
{
while(true)
{ /*执行的程序*/ }
}
(function (){alert(1);})()
</script>
如果使用{$val}这种形式,就会跟body{margin:0;padidng:0;}这种类型发生冲突;
如果使用{ $val }这种形式,就会跟p{ color:#000; font-size:14px; }这种类型发生冲突;
smarty会将上面的用{}括起来的部分进行编译,编译成我们不需要的东西,从而产生错误;
上面的那两种css代码和javascript代码是非常常见的代码格式,不同的开发人员有不同的开发风格,我们都不能强制别人和我们都使用同样的开发风格。
笔者认为有三种方法可以避免冲突的发生。
第一种:重新定义smarty的定界符并且允许两边出现空格。
在smarty的类中提供了三个公有属性:
$left_delimiter —— 用来定义左定界符;
$right_delimiter —— 用来定义右定界符;
$auto_literal —— 用来定义是否允许出现空格,这个值默认为true,即:不允许出现空格;
我们可以通过设置这三个属性来重新定义smarty的定界符并且允许两边出现空格。
如:(我们将定界符定义成<{$val}>这种形式)
$smarty = new Smarty();
$smarty->left_delimiter = ‘<{’;
$smarty->right_delimiter = ‘}>’;
$smarty->auto_literal = false;
这样就可以使用<{$val}>或<{ $val }>这两种形式都不会出现错误;
第二种:把javascript代码或css代码写到一个js文件或css文件中,在模板页中引用即可。
第三种:
使用smarty内置的literal标签,此标签内的数据将会被当做文本处理。如:
{literal}
<script language=javascript>
........
</script>
{/literal}
可以根据个人的使用习惯以及爱好来选择一种方式。
- php模版引擎(smarty3)—优化(定界符,避免和其他语言的冲突)
- php模版引擎(smarty3)—优化(选择注释)
- php模版引擎(smarty3)—display()渲染文本字符串
- 关于把PHP模版引擎smarty2升级到smarty3的一些见解
- jQuery避免$符和其他JS冲突的方法对比
- php的<<<(定界符)
- Smarty3.0跟php的__autoload()有冲突
- PHP 定界符的使用 <<<
- PHP定界符{}的作用
- smarty3.0和__autoload()冲突
- jQuery入门:避免和其他库冲突
- 如何解决css和js的{}与smarty定界符冲突的问题
- php 定界符和 双引号区别
- PHP学习笔记——字符串的定界符声明;
- php 的定界符 <<<eof 的问题
- php 的定界符 <<<eof 的问题
- PHP <<<EOT定界符的使用详解
- [转]php中定界符<<<的作用
- android studio 无法在可视化页面预览布局文件
- 一个非常实用的带验证码的模拟登陆实例
- poj 2786 Keep the Customer Satisfied(贪心+优先队列)
- 优盘启动盘进入系统后识别不了硬盘
- java中对数组的操作
- php模版引擎(smarty3)—优化(定界符,避免和其他语言的冲突)
- ubuntu搭建OpenGrok
- [模板]筛选法求欧拉函数
- 二值图像边缘提取算法C语言实现
- HDN通畅工程
- android AVD 启动时报错(emulator: erroremulator:ERROR:This AVD's configuration is missing a kernel file )
- 全志a33下生成设备节点/dev/spi0.0的步骤(全志a20下生成/dev/spidev2.0)
- 自定义 view oncreate -> onmesure -> onlayout ->在 成员方法findviewbyid 为 null , 在 onmesure则友值
- STL中的排序算法一览