smarty高级功能
发布:smiling 来源: PHP粉丝网 添加日期:2013-11-14 19:59:28 浏览: 评论:0
继续来谈smarty,这文主要是写一些比较高级点的功能。首先是smarty的数据对象,但是其实不是很推荐这个功能,首先在PHP里面定义一个对象,然后assign到模板输出,然后再模板中用->访问,还有一个是在PHP里面通过$smarty->registerObject('foobar',$myobj);来注册一个方法,然后再在模板中使用{foobar->meth1 p1='foo' p2=$bar},这个方法有一个好处,就是可以通过第三个参数(数组)来控制不想让其访问的对象方法,只有在第三个参数里面包含的方法才可以访问。
第二个就是模板继承功能,首先可以在父模板里面用{block name="xx"}{/block}定义一个内容,暂时不考虑其内容,然后再子模板中定义其内容{block name="xx"}你说需要的内容{/block},其原理和类的继承很相似,可以一直继承下去,但是子模板必须只能写这些内容
{extends file="父模板.html"}
{block name="xx"}你说需要的内容{/block}
整个HTML页面就必须是只有这些内容(block标签可以多写),其他内容写了也没是没有任何意义的,第三个就是比较有用的调节器插件开发,其实也很简单,只要研究一下smarty的源代码就知道,调节器都是放在Smarty\libs\plugins文件夹下面名字为modifier.调节器名字.php的文件里面,而里面的内容我modifier.truncate.php来做例子
- function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
- {
- if ($length == 0)
- return '';
- if (Smarty::$_MBSTRING) {
- if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
- $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
- if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
- }
- if (!$middle) {
- return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
- }
- return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
- }
- return $string;
- }
- // no MBString fallback
- if (isset($string[$length])) {
- $length -= min($length, strlen($etc));
- if (!$break_words && !$middle) {
- $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
- }
- if (!$middle) {
- return substr($string, 0, $length) . $etc;
- }
- return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
- }
- return $string;
- }
看起来很复杂是不是,其实我们需要关注的就只有红色字体内容,首先是方法名必须是这种格式smarty_modifier_调节器名称,然后参数,第一个就是传过去的变量,在模板里面你需要调节的内容,后面的参数那就可以自己来定义了,然后通过后面这些自定义参数,在函数内部对其进行一连串的操作,然后最后把这个变量返回回来输出,就是这么简单,以一个改变字体颜色的modifier_modcol.php为例子,首先在Smarty\libs\plugins里面新建这个文件modifier_modcol.php,内容为
- function smarty_modifier_modcol($string,$color){
- return '' .$string. '';
- }
没错,就是这么简单,然后在模板里面调用{$test|modcol:"blue"}就可以把$test改为你需要的颜色文字输出了。
此文就介绍到这里了
Tags: smarty 高级 功能
- 上一篇:smarty入门之优缺点
- 下一篇:smarty缓存
相关文章
- ·smarty入门之优缺点 (2013-11-14)
- ·smarty缓存 (2013-11-14)
- ·关于smarty的原理 (2013-11-14)
- ·smarty的入门及简单的编码(2013-11-14)
- ·smarty post实例(2013-11-14)
- ·smarty 中include_php传递参数的问题(2013-11-28)
- ·smarty模板中使用get、post、request、cookies、session变量的方法(2020-11-20)
- ·PHP中使用smarty生成静态文件的例子(2020-11-20)
- ·php smarty模板引擎的6个小技巧(2020-11-20)
- ·PHP模板引擎Smarty的缓存使用总结(2020-11-20)
- ·在PHP模板引擎smarty生成随机数的方法和math函数详解(2020-11-20)
- ·Smarty模板学习笔记之Smarty简介(2020-12-25)
- ·模板引擎smarty工作原理以及使用示例(2021-01-10)
- ·smarty模板局部缓存方法使用示例(2021-02-21)
- ·Smarty局部缓存的几种方法简介(2021-02-21)
- ·php之Smarty模板使用方法示例详解(2021-03-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)