zoukankan      html  css  js  c++  java
  • smarty学习笔记三 常用内建方法

    PHP内建方法
    {$var=...}
    该方法是{assign}的简写模式,用来直接在模版中定义一个变量。
    属性:
    scope: parent\root\global
    支持nocache

    {append}
    在调用模版的过程中向模版变量中创建一个数组变量,或者向一个已知的数组变量中追加元素,支持nocache标签
    属性:
    var 变量名
    value 变量值
    index 插入的变量在数组中的下标索引,如果没指定该值,则默认添加在数组的最后
    scope 访问权限
    支持nocache标签

    {assign}
    作用与{$var=...}相同
    属性
    var 定义的变量名
    value 定义的变量值
    scope 访问权限
    支持nocache标签

    {call}
    用来调用在模版中使用{function}标签定义的方法。该方法必须含有name属性,同时也可以将变量以属性的方式传递给调用的方法中
    属性:
    name 要调用的模版方法命
    assign 将调用模版方法后返回来的值存储到assign定义的变量中,而不是直接输出返回值
    [var...]向模版方法中传递变量以供方法使用
    支持nocache标签

    {capture}
    用来收集出现在{capture name='foo'}与{/capture}块之间的内容,并将其内保存到名字为foo的capture块标签中,如果未指明name属性,缺省default。可以使用$smarty.capture.foo来访问保存的内容。该标签不可被嵌套使用。
    属性:
    name capture块标签名
    assign 若指定该属性,将捕获的内容赋值到给定变量中
    append 用来将捕获的内容追加到指定的数组中去
    支持nocache标签

    {config_load}
    用来获取配置文件中的变量信息
    属性:
    file 要读取的配置文件名
    section 读取配置文件中指定片段
    scope 权限分配

    {debug}
    弹出调试控制页面。该设置不会受到在php脚本中对debug设置的影响。

    {extends}
    该标签用在子模版中,用来指明所要继承的父模版。
    该标签必须在子模版的第一行中出现
    如果子模板用{extends}标签继承父模板,那么它只能包含{block}标签(内容),其它任何模板内容都将忽略; 
    使用此语法为模板资源继承$template_dir目录外的文件。 
    属性:
    file 要被继承的模版名

    {for}
    {for}{forelse}标签用来进行简单的循环,它支持下面两种格式的用法:
    {for $var=$start to $end} 步长为1
    {for $var=$start to $end step $step} 指定步长
    但循环为空时执行{forelse}
    属性:
    max 限制最大的循环次数
    支持nocache标签

    {foreach},{foreachelse}
    用来对一个数组数据进行简单的循环,格式有:
    {foreach $array as $val}
    {foreach $array as $key=>$val}
    当循环的内容为空时执行{foreachelse}语句
    {foreach}具有下列属性:@index, @iteration, @first, @last, @show, @total。
    支持{break}和{continue}

    {function}
    用于在模版内部创建模版函数,调用方法与插件调用类似。
    注意:模版函数是全局的,如果要调用外部模版的模版函数,必须使用{call}标签,调用自己模版的模版函数则可以直接使用{functionname}形式来调用。

    {if},{elseif},{else}
    与php中类似,只是必须用{/if}进行结束标志。所有PHP条件函数和方法都可使用(is_array())。

    {include}
    用于将其它模版引入到当前模版中,当前模板中的任何有效变量在被包含模板中同样可用。 
    必须指定file属性,该属性指明模板资源的位置。 
    设置assign属性选项可以指定{include}的输出贮存分配给哪个模板变量,而不显示内容,类似于{assign}。 
    变量可以作为属性参数传递给被包含模板,任何明确传递给被包含模板的变量只在被包含文件的作用域中有效。如果传递的属性变量在当前模板中有同名变量,那么传递的属性变量将覆盖当前模板变量。 
    被包含模板内部可以使用主模板的所有变量,但在被包含模板里面改变或新建的变量只有本地作用域,使用{include}语句后这些变量在主模板内部将不可见;有两种方法可以改变这种默认行为(变量作用域):在{include}语句中使用scope属性对被包含模板的所有赋值变量有效,或在{assign}语句中使用scope属性改变个别变量作用域。后一特性在从被包含模板返回值给主模板时非常有用。 
    包含$template_dir文件夹之外的模板请使用模板资源语法。
    支持nocache、caching、cache_lifetime标签
    inline标签:设置该项,将会被包含文件编译到包含文件中(很有用)

    {include_php} {insert}不赞成使用

    {ldelim},{rdelim}
    输出smarty的左右标签。

    {nocache}
    必须与{/nocache}成对出现。用来禁用模版中的某个片段进行缓存。即出现在该块中的内容不会被缓存

    {section},{sectionelse}
    对连续的数值下标索引的数组进行循环。无法对值索引数组进行循环,建议使用{foreach}

    {setfilter}
    必须与{/setfilter}标签成对出现。出现在该块标签内的所有变量都会进行过滤
    语法:{setfilter filter1|filter2|filter3....}...{/setfilter}
    该标签可以被嵌套使用,内嵌的标签过滤器会覆盖上层的过滤器

    {while}
    与PHP的while语句类似。所有PHP条件函数和方法都可使用(is_array())。
    PHP技术交流群 170855791

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/gbyukg/p/2506648.html
Copyright © 2011-2022 走看看