变量输出修饰器

变量修饰器可以用于变量, 自定义函数或者字符串。

 

后置修饰器

后置修饰器用于变量输出对数据进行相应调整而使用, 使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称。 修饰器可能还会有附加的参数以便达到效果。 

参数会跟着修饰器名称,用":"(冒号)分开,多个参数用":"(冒号)隔开。

 

{*  转为大写 *}
{$title|upper}
{* 接受多个参数 *}
{$title|truncate:40:"..."}
{* 字符串中使用 *}
{"foobar"|upper}
{* 1个参数,默认值修饰器 *}
{$temp|default:''}
{* 日期格式化 *}
{time()|date_format:"%Y年%m月%d日"}
{* 多个修饰器联合使用 *}
{assign var=my_string value="aldskffalkdj中文中文中文"}
{$my_string|upper|truncate:20}
{*
raw 非转义原文输出
Sdopx 默认输出会自动转换成HTML实体输出,raw 修饰器可以按原文
raw 修饰器必须是最后一个修饰器
*}
{'<b>name</b>'|raw}
{$my_string|upper|truncate:20|raw}

输出:

HELLO SDOPX

Hello Sdopx

FOOBAR



2018年07月26日


ALDSKFFALKDJ中文中...

<b>name</b>
ALDSKFFALKDJ中文中...

 

目前内置支持的修饰器

修饰器 参数 描述
upper 字母转为大写
lower 字母转为小写
strip_tags 移除html标签
default def:string='' 默认值修饰器,当变量值为无效、null、空 时,显示 def 的值
date_format format:string='%Y-%m-%d %H:%M:%S' 时间格式化,如时间:%Y-%m-%d %H:%M:%S
leftpad len:number=0,ch:string=' ' 字符串左填充,len 填充长度 ch 为填充的字符
rightpad len:number=0,ch:string=' ' 字符串右填充,len 填充长度 ch 为填充的字符
truncate len:number=60,etc='' 字符串截取,len 截取长度 中文算2个字符串,etc 是超出后的替代符号 如 …
number_format decimals=0,dec_point='.',thousands_sep='' decimals 要保留的小数点位数,dec_point指定小数显示的字符,thousands_sep 指定千位分隔符显示的字符
option keys=null,
values=null,
def:string=''

选择输出,keys 如果是数组那么 values 也要求是数组,当 值 在keys 中或者等于keys 则输出对应位置的values 值,如果不存在 输出 def.
如果  {3|option:[1,2,3,4]:['一','二,'三','四']:'无'} 输出对应values 中的 三。

  raw

按原义输出,不转码输出,必须是最后的修饰器

 

除了系统提供的修饰器,Sdopx 还支持用户自定义注册修饰器,更多可查阅自定义修饰器。

 

自定义修饰器

 

例子如下:

//test.php

define('ROOT_DIR', __DIR__);
date_default_timezone_set('PRC');
require(ROOT_DIR . '/vendor/autoload.php');

use sdopx\Sdopx;

//定义修饰器 replace
class Replace
{
    public function render($string, $search, $replace)
    {
        return str_replace($search, $replace, $string);
    }
}

//注册修饰器
Sdopx::registerModifier('replace', new Replace());


$sdopx = new Sdopx();
//设置模板目录
$sdopx->setTemplateDir('./view');
//设置编译代码存放目录
$sdopx->setCompileDir('./runtime');
//注册变量
$sdopx->assign('name', 'wj008');
//显示模板
$sdopx->display('index.tpl');

模板:

{'hello test!'|replace:'test':$name}</br>

结果:

hello wj008!</br>


更多自定义修饰器,请参阅修代码编程-饰器文档。

上一篇:模板设计.变量作用域
下一篇:内置标签
Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号