PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Smarty教程 > 正文

    smarty3从入门到精通详解(四)-基本语法

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:1、Smarty3.1.4基本语法4.5 系统自定义函数4.5.1 assign{assign var=name value=韩灵稚 nocache=falsescope=global} #在模板中定义$s...
    1、Smarty3.1.4基本语法
     

     

    4.5 系统自定义函数

    4.5.1 assign

    {assign var=”name” value=”韩灵稚” nocache=”false”scope=”global”}  #在模板中定义

    $smarty->assign($tpl_var, $value = null, $nocache = false, $scope = SMARTY_LOCAL_SCOPE)

    #在php文件中定义

    nocache决定了是否需要不缓存该变量(前提是需要启动缓存)。

    scope 决定了变量的作用范围,有global、parent、local

    【相关函数】

    $smarty->assignGlobal($varname, $value = null, $nocache = false)   #直接分配一个全局的变量

    $smarty->assignByRef($tpl_var, &$value, $nocache = false, $scope = SMARTY_LOCAL_SCOPE)

    #分配一个引用变量,适合传递的变量较大,比如对象类型,可以防止内存拷贝。

    $smarty->clearAssign($tpl_var)   #清楚特定的变量

    $smarty->clearAllAssign()    #清除所有分配的变量

     

    4.5.2 append

    3.0新增的函数,向模板中分配的变量,该变量可以接受多个值,从而成为变量数组。

    $smarty->append($tpl_var, $value = null, $merge = false, $nocache = false, $scope = SMARTY_LOCAL_SCOPE)

    #php文件中

    {append var=”name” value=”2″}    #模板文件中

    例子:

    $smarty->assign(‘nh’, ‘var1);   #分配一个变量模板,值为var1

    $smarty->append(‘nh’,’var2′);   #对同一个变量,在追加一个值。nh模板变量为数组。

    {$nh[0]}  #在模板文件中使用第一个值

    $merge,应该是是否合并原值,目前版本测试的时候,不起任何作用。

    【相关函数】

    $smarty->appendByRef($tpl_var, &$value, $merge = false)  #添加一个引用变量到模板变量中,$merge不起作用。

     

    4.5.3 counter

    计数器。当第一次出现{counter}时开始计数,每次出现{counter}按照规定的计数。

    {counter start=开始(1) skip=步阶(1) direction=递增/递减(up/down) print=是否显示(true) assign=输出给模板变量}

    counter除了start和assign ,其他属性的设置,会对一下次的counter起作用。如果规定了assign ,

    则包含文件不会马上输出,模板输出的数据将存储到assign指定的变量里, 这样可以根据实际情况,

    再输出包含文件的内容。

     

    4.5.4 cycle

    用于轮转使用一组值。当第一次出现{cycle}时开始,每次出现{cycle}轮换每个值。

    {cycle name=名称 values=一组值 print=是否输出(true) advance=是否使用下一个值(true)

    delimiter=一组值中的分隔符(,) assign=输出给模板变量}

     

    4.5.5 debug

    什么也不说了,一个字强大。用了你就知道了,在需要设断点的地方写入{debug}

    如果使用fetch(),则debug失效。只能使用display()。

    {debug output=输出的格式(javascript/html) }   #模板声明调试,,可以选择输出的方式默认是js窗口。

    $smarty->getDebugging()    #得到当前是进行调试,默认false

    $smarty->setDebugging(true)    #对后续调用的模板进行调试。

    $smarty->getDebug_tpl()   #获得调试所需要的tpl模板,可以自己修改。

    $smarty->setDebug_tpl(‘new_debug.tpl’)   #重新指定新的用于调试的模板

     

    4.5.6 eval

    eval 按处理模板的方式计算取得变量的值。个人感觉用处不大,对缓存支持不好。

     

    4.5.7 fetch

    fetch 用于从本地文件系统、HTTP或FTP上取得文件并显示文件的内容。

    如果文件名称以”http://”开头,将取得该网站页面并显示。

    如果文件名称以”ftp://”开头,将从ftp服务器取得该文件并显示。

    {fetch file=”/export/httpd/www.domain.com/docs/navbar.js”}

    {fetch file=”ftp://user:password@ftp.domain.com/path/to/currentheadlines.txt”}

    {fetch file=”http://www.myweather.com/68502/” assign=”weather”}

    {if $weather ne “”}<b>{$weather}</b>{/if}

    调用的文件内容,如果能被html解析,则会输出解析内容

    【相关函数】

    $smarty->fetch($template, $cache_id = null, $compile_id = null, $parent = null)

    #将模板输出的内容放入变量中,供以后使用,如果规定了编译id,

    比如3,则编译后的文件名称为“3^常规名称”,缓存id同理。

    $output = $smarty->fetch(“index.tpl”);

    // do something with $output here// 对将要输出的内容进行处理

    echo $output;

     

    4.5.8 math

    math 允许模板设计者在模板中进行数学表达式运算.

    {math equation=自定义公式 [var…]=变量值 format=结果格式化字符串 assign=输出给模板变量}

     

    4.5.9 popup_init,popup

    输出javascript窗口。

    {popup_init src=”/javascripts/overlib.js”}  #popup_init载入js文件,必须的。

    {popup text=”弹出信息”}     #个人感觉意义不大,参数很多,可以看chm

     

    4.5.10 textformat

    textformat 用于格式化文本。该函数主要清理空格和特殊字符,对段落按单词边界换行和行缩进等段落格式化处理。

    与变量调节器类似,优点是可以调整段落,参数具体看文档。

    {textformat [修改参数….]}

    需要修改的段落

    {/textformat}

     

    4.5.11 html_checkboxes

    根据函数生成checkboxes(多选)页面元素。

    {html_checkboxes  name=名称(checkbox)  values=值数组  ouput=显示数组

    selected=已显示的元素或者数组,数组值为values  options=代替(value+output)可用关联数组

    separator=分隔每个复选按钮的字符串  label=是否为每个复选按钮添加 <label> 标签(true)}

    {assign var=cb_values value=[1,2,3,4,5,6] scope=”global”}

    {assign var=cb_content value=['北京','广州','天津','石家庄','太原','济南'] scope=”global”}

    {assign var=cb value=['1'=>'北京','3'=>'广州','2'=>'天津','4'=>'石家庄','5'=>'太原','6'=>'济南'] scope=”global”}

    {assign var=cb_selected value=[1,2]}

    {html_checkboxes name=”checkbox” values=$cb_values output=$cb_content selected=$cb_selected

    separator=”|”}

    {html_checkboxes name=”checkbox” options=$cb selected=$cb_selected separator=”|”}

     

    4.5.12 html_image

    意义不大,直接写html可能会更好,不能生成img标签的id和name属性

    {html_image file=图片路径和名称 border=边框 height=高度 width=宽度 alt=alt内容 href=图片url}

     

    4.5.13 html_options

    {html_options  name=下拉菜单名称  values=值数组  ouput=显示数组  selected=已显示的元素 options=代替(value+output)可用关联数组}

    注意,如果没有添加name属性,需要自己加入<select></select>标记。

    如果selected是一个数组且不能多选,则选择数组的最后一个值作为以选择的。

     

    4.5.14 html_radios

    {html_radios  name=名称(radio)  values=值数组  ouput=显示数组

    selected=已显示的元素options=代替(value+output)可用关联数组  separator=分隔每个复选按钮的字符串}

    4.5.15 html_select_date,html_select_time,html_table

    意义不大,有局限性,不如手写。看手册吧。

     

    4.5.16 mailto

    {mailto address=发送邮箱 cc=抄送邮箱 bcc=暗送邮箱 subject=主题 text=链接内容 encode=编码形式(javascript/hex)}

    具体看手册吧,测试中字符集格式转换有问题。

     

     

    4.6 模板中自定义函数

    3.0以后可以在模板内创建函数,而不需要一定先注册或者建立组件。

    {function name=函数名 [var…]=默认值}   #定义函数

    函数体。。

    {/function}

    {call name=函数名 [var…]=传值}   #调用函数,调用函数的代码一定要放在函数定义代码之后

    {函数名 [var…]=传值}    #也可以这样调用

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-84-4975-1.html
    相关热词搜索: