PHP模板引擎Smarty自定义变量调解器用法,ThinkPH
分类:www.澳门新萄京赌场

正文实例汇报了ThinkPHP模板Volist标签嵌套循环输出多维数组的办法。共享给大家供我们参照他事他说加以考察,具体如下:

本文实例叙述了ThinkPHP模板中数组循环的兑现情势。分享给我们供我们参谋。具体落到实处际处境势如下:

本文实例陈述了ThinkPHP模板之变量输出、自定义函数与判定语句用法。首要不外乎变量输出、自定义函数与判定语句二种用法。分享给大家供我们参考。具体深入分析如下:

本文实例叙述了PHP模板引擎斯Matty自定义变量调度器用法。分享给大家供我们参谋,具体如下:

ThinkPHP模板引擎的defined标签用于判别常量是或不是曾经被定义
ThinkPHP的defined标签用来剖断常量是不是曾经被定义,其遵从相当于PHP中的defined()函数。defined标签用法如下:

ThinkPHP 中对 volist 标签嵌套使用可完结多维数组的出口。

ThinkPHP开采进度中时时用到输出数组在模板中应用,一般select出来的数据都以二维数组,大家在模板中用volist标签就能够出口,明日支出蒙受了那般二个主题素材:倘若是二维数组,如何在模板中输出呢?经过查看开辟手册,难点获得消除,分享一下,举个例子那样的一维数组:

模板操作变量输出:

在 PHP 中,有成都百货上千管理文件的函数,您可以把要管理的公文通过函数处理今后,再调用 斯马特y 模板引擎中的 assign() 赋值给变量,分配到模板中张开始展览示。

<present name="常量">要输出的内容</present>

volist 嵌套使用

复制代码 代码如下:

高速输出变量

斯马特y 中的变量调治器和 PHP 中管理公事的函数相似,可是语法不等同,在 Smarty 中,是经过 "|" 后边间接跟调度器函数名,借使有参数,得加在 ":" 后边,三个参数的话,累加就能够。

先在模块操作(如:Index/display )里定义三个常量并出口模板:

诚如的二维数组,能够用 volist 标签直接循环输出。对于多维数组,则须要对中间的数组成员再次行使 volist 标签嵌套循环输出。

array(2) {
[2] => string(12) "www.jb51.net博文配图"
[3] => string(12) "暗许相册"
}

复制代码 代码如下:

格式:{$var|modifier1:"参数1":"参数2":参数3|modifier2|modifier3|...}

define("SITE_NAME", "脚本之家");
$this->display();

创设一个多维数组:

用到foreach标签,他能够循环一维或许是二维数组,一维数组那样用:

{:function(…)} //实行方法并出口重临值
{~function} //试行方法不出口
{@var} //输出Session变量
{#var} //输出Cookie变量
{&var} //输出配置参数 
{%var} //输出语言变量
{.var} //输出GET变量
{^var} //输出POST变量
{*var} //输出常量

概念调节器的文件必须放置在 Smarty 中,具体路子是:libs/plugins/。其文件名称,必须比照 Smarty 的格式 modifier.调整器名.php

在模板/Tpl/default/Index/display.html中利用defined标签如下:

$food = array();
$food[0]['fruits'][0]['fruits1'] = '苹果1';
$food[0]['fruits'][0]['fruits2'] = '桔子1';
$food[0]['fruits'][0]['fruits3'] = '香蕉1';
$food[0]['vegetables'] = '白菜1';
$food[1]['fruits'][1]['fruits1'] = '苹果2';
$food[1]['fruits'][1]['fruits2'] = '桔子2';
$food[1]['fruits'][1]['fruits3'] = '香蕉2';
$food[1]['vegetables'] = '白菜2';

复制代码 代码如下:

 模版输出

上面通过多个实例演示 斯马特y 中,自定义变量调度器的应用

<defined name="SITE_NAME">网站名称:{*SITE_NAME}</defined>

使用 print_r() 函数打字与印刷出该数组如下:

<select id="album_title">
<foreach name="titles" item="vo">
<option value="{$key}">{$vo}</option>
</foreach>
</select>

复制代码 代码如下:

次第思路:做七个变量调度器,成效是:贰个更换文本;一个截取文本。

运维该示例会输出:

Array
(
  [0] => Array
    (
      [fruits] => Array
        (
          [0] => Array
            (
              [fruits1] => 苹果1
              [fruits2] => 桔子1
              [fruits3] => 香蕉1
            )
        )
      [vegetables] => 白菜1
    )
  [1] => Array
    (
      [fruits] => Array
        (
          [1] => Array
            (
              [fruits1] => 苹果2
              [fruits2] => 桔子2
              [fruits3] => 香蕉2
            )
        )
      [vegetables] => 白菜2
    )
)

PHP模板引擎Smarty自定义变量调解器用法,ThinkPHP模板之变量输出。目的在于本文所述对大家的ThinkPHP框架程序设计有所帮忙。

//1 直接调用index操作模板
$this->display();
// 对应Myapp/Tpl/default/Index/index.html
//2 调用Index模块的test1操作模板
$this->display('test1');
//对应Myapp/Tpl/default/Index/test1.html
//2 调用Message模块的test2操作模板()
$this->display('Message:test2');
//对应Myapp/Tpl/default/Message/test2.html
//3 调用XP核心的Message模块的test2操作模板
$this->display('Xp@Message:test2');
//对应Myapp/Tpl/Xp/Message/test2.html
//4 直接内定模板文件的人名
$this->display('../Message/test3.html');
//对应Myapp/Tpl/default/Message/test3.html

init.inc.php(Smarty起初化文件)

网站名称:脚本之家

在对应模块操作(如Index/display)里将变量赋值给模板,并将模板输出:

你可能感兴趣的篇章:

  • ThinkPHP模板Volist标签嵌套循环输出多维数组的议程
  • ThinkPHP模板之变量输出、自定义函数与决断语句用法
  • PHP 替换模板变量达成步骤
  • PHP模板引擎斯Matty中变量的运用方式以身作则
  • PHP模板引擎斯马特y之陈设文件在模板变量中的使用方法身体力行
  • PHP模板引擎斯马特y中的保留变量用法深入分析
  • PHP模板引擎Smarty自定义变量调治器用法
  • PHP模板引擎斯马特y内置变量调治器用法详解
  • thinkPHP调控器变量在模板中的展现情势身先士卒
  • PHP模板引擎Smarty自定义变量调解器用法,ThinkPHP模板之变量输出。PHP自定义函数完毕assign()数组分配到模板及extract()变量分配到模板效率示例

利用判别语句

<?php
  define('ROOT_PATH', dirname(__FILE__)); //设置网站根目录
  require ROOT_PATH.'/libs/Smarty.class.php'; //加载 Smarty 模板引擎
  $_tpl = new Smarty(); //创建一个实例对象
  $_tpl->template_dir = ROOT_PATH.'/tpl/'; //设置模板文件目录
  $_tpl->compile_dir = ROOT_PATH.'./com/'; //设置编译文件目录
  $_tpl->left_delimiter = '<{'; //设置左定界符
  $_tpl->right_delimiter = '}>'; //设置右定界符
?>

该例子等价的php代码如下:

$this->assign( "food", $food );
$this->display();

笔者们得以选取if标签来定义复杂的条件判定,比方:

index.php(主文件)

<?php
if(defined("SITE_NAME")){
  echo '网站名称:',constant("SITE_NAME");
}
?>

模板 Tpl/default/Index/display.html :

复制代码 代码如下:

<?php
  define('CONST_VAR', 'ABC');
  require 'init.inc.php'; //引入模板初始化文件
  global $_tpl;
  $_str = 'abcdEFGHigklmnOPQRSTuvwsYz'; //定义一个字符串
  $_tpl->assign('str',$_str); //字符串赋值给str
  $_tpl->assign('str1',strtolower($_str)); //字符串全部转换为小写赋给str1
  $_tpl->assign('str2',strtoupper($_str)); //字符串全部转换为大写赋给str2
  $_tpl->assign('str3',ucfirst($_str)); //字符串首字母转换为大写赋给str3
  $_tpl->assign('str4',substr($_str, 0,15).'...'); //截取字符串前15个字符,后面的用'...'代替,并赋给str4
  $_tpl->assign('str5',strtoupper(substr($_str, 0,15)).'...'); //截取字符串前15个字符转换为大写,后面的用'...'代替,并赋给str4
  $_tpl->display('index.tpl'); //引入模板
?>

一旦推断未有被定义,能够运用:

<p>食物品种:</p><br />
<volist name="food" id="vo">
 <volist name="vo['fruits']" id="f">
 <p>水果1:{$f['fruits1']}</p>
 <p>水果2:{$f['fruits2']}</p>
 <p>水果3:{$f['fruits3']}</p>
 </volist>
 <p>蔬菜:{$vo['vegetables']}</p><br />
</volist>

<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2" />value2
<else /> value3
</if>
在condition属性中能够协助eq等看清表明式 ,同地点的可比标签,可是不支持带有”>”、”<”等标识的用法,因为会搅乱模板深入分析,所以上面包车型客车用法是不对的:

tpl/index.tpl

<notdefined name="SITE_NAME">{*SITE_NAME}不存在活未定义</notdefined>

在模板里面,首先将 $food 变量进行巡回输出。由于 $food 数组的分子 fruits 也是贰个数组,因而再对 $vo['fruits'] 变量进行巡回输出(注意未有 $ 符号)。

<if condition="$id < 5 "> value1
<else /> value2
</if>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Smarty 中的变量调解器</title>
</head>
<body>
  <{$str}><br />   <!-- 输出字符串原形 -->
  <{$str1}><br />  <!-- 输出字符串转换为小写-->
  <{$str2}><br />  <!-- 输出字符串转换为大写 -->
  <{$str3}><br />  <!-- 输出字符串首字母大写 -->
  <{$str4}><br />  <!-- 截取字符串,截取15个字符串,后面的用'...'代替 -->
  <{$str5}><br />  <!-- 截取字符串,截取15个字符串,转换为大写,后面的用'...'代替 -->
  <!--
    您会发现,使用赋值过来的变量,使用起来不是很灵活,
    如果需要处理字符串,就必须得在主文件中设立一个新变量,并把值赋给这个新变量。
    使用变量调解器,可灵活的处理字符串
   -->
  <{$str|transform}><br />      <!-- 输出字符串原形-->
  <{$str|transform:"lower"}><br />  <!-- 输出字符串转换为小写-->
  <{$str|transform:"upper"}><br />  <!-- 输出字符串转换为大写 -->
  <{$str|transform:"firstdx"}><br /> <!-- 输出字符串首字母大写 -->
  <{$str|subString:0:15:"###"}><br /> <!-- 截取字符串,截取15个字符串,后面的用'###'代替 -->
  <{$str|subString:0:15:"@@@"|transform:"upper"}><br />  <!-- 截取字符串,截取15个字符串,后面的用'@@@'代替 -->
  <{$str|transform:"upper"|subString:0:15:"@@@"}><br />  <!-- 功能同上 -->
</body>
</html>

如上八个示范合併之后如下:

出口结果如下:

非得改成:

/libs/plugins/modifier.transform.php(调换文件调节器)

<defined name="SITE_NAME">网站名称:{*SITE_NAME}<else/>{*SITE_NAME}不存在活未定义</defined>
食物品种:

水果1:苹果1
水果2:桔子1
水果3:香蕉1
蔬菜:白菜1

水果1:苹果2
水果2:桔子2
水果3:香蕉2
蔬菜:白菜2

复制代码 代码如下:

<?php
  /**
   * smarty_modifier_transform
   * 字符串转换的变量调解器函数
   * @param string $string 处理字符串
   * @param string $type  处理类型
   */
  function smarty_modifier_transform($string,$type) {
    switch ($type) {
      case 'upper' :
        $str = strtoupper($string);
        break;
      case 'lower' :
        $str = strtolower($string);
        break;
      case 'firstdx' :
        $str = ucfirst($string);
        break;
      default:
        $str = $string;
    }
    return $str;
  }
?>

您大概感兴趣的小说:

  • ThinkPHP模板Volist标签嵌套循环输出多维数组的法子
  • Thinkphp中volist标签mod调节一定记录的换行BUG消除方法
  • Thinkphp的volist标签嵌套循环使用教程
  • Thinkphp中的volist标签用法简单介绍
  • Thinkphp模板标签if和eq的界别和相比实例深入分析
  • thinkphp使用literal制止模板标签被深入分析的点子
  • ThinkPHP模板范围剖断输出In标签与Range标签用法详解
  • ThinkPHP模板剖断输出Empty标签用法详解
  • ThinkPHP模板决断输出Present标签用法详解
  • ThinkPHP模板比较标签用法详解
  • ThinkPHP模板Switch标签用法示例
  • ThinkPHP模板自定义标签使用办法
  • thinkPHP的Html模板标签使用方法
  • ThinkPHP模板循环输出Volist标签用法实例详解

同理推之以此方法能够对越多维的数组举办巡回输出。

<if condition="$id lt 5 "> value1
<else /> value2
</if>

lib/plugins/modifier.subString.php(截取文本调节器)

更多关于thinkPHP相关内容感兴趣的读者可查看本站专项论题:《ThinkPHP入门教程》、《ThinkPHP常用艺术总计》、《smarty模板入门基础教程》及《PHP模板工夫总计》。

除了,我们得以在condition属性里面使用php代码,比方:

<?php
  /**
   * smarty_modifier_subString
   * 处理截取字符串调解器
   * @param string $string  处理字符串
   * @param int $start_num  开始位置,默认从头开始
   * @param int $end_num   结束位置,默认20
   * @param string $addTo   追加字符串,默认'...'
   */
  function smarty_modifier_subString($string,$start_num=0,$end_num=20,$addTo='...') {
    $_str = '';
    if (strlen(substr($string, $start_num, $end_num))>=$end_num) {
      $_str = substr($string, $start_num, $end_num).$addTo;
    } else {
      $_str = substr($string, $start_num, $end_num);
    }
    return $_str;
  }
?>

瞩望本文所述对大家基于ThinkPHP框架的PHP程序设计有着帮衬。

复制代码 代码如下:

实施结果:

你也许感兴趣的稿子:

  • ThinkPHP模板中数组循环实例
  • ThinkPHP模板之变量输出、自定义函数与决断语句用法
  • PHP 替换模板变量完成步骤
  • PHP模板引擎Smarty中变量的运用方法身先士卒
  • PHP模板引擎斯马特y之计划文件在模板变量中的使用方法身体力行
  • PHP模板引擎Smarty中的保留变量用法分析
  • PHP模板引擎斯马特y自定义变量调节器用法
  • PHP模板引擎斯马特y内置变量调治器用法详解
  • thinkPHP调控器变量在模板中的展现方式亲自去做
  • PHP自定义函数达成assign()数组分配到模板及extract()变量分配到模板成效示例

<if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP
<else /> other Framework
</if>

澳门新萄京 1

condition属性能够支撑点语法和对象语法,比如:
电动判别user变量是数组照旧对象

通过地点的实例,评释调节器文件必须放在 斯马特y 的插件目录 plugins 下,并且命名必须比照 斯马特y 的准绳,那样,技能调用到你编写的调治器函数。还会有一点点亟待注解,定义的函数名称也务必符合 Smarty 钦定的命名准绳,比如:smarty_modifier_XXX,并且一个调整器文件,只可以放一个函数,无法放置多个。

复制代码 代码如下:

好了,自定义调节器先介绍到那边, 斯马特y 中有众多已经写的调节器函数,能够拿来一贯调用或退换成您本身喜爱的风格。关于 Smary 内置的调治器,后续章节会有详细介绍。

<if condition="$user.name neq 'ThinkPHP' "> ThinkPHP
<else /> other Framework
</if>

越多关于PHP相关内容感兴趣的读者可查看本站专项论题:《smarty模板入门基础教程》、《PHP模板技艺计算》、《PHP基于pdo操作数据库技艺总括》、《PHP运算与运算符用法总计》、《PHP网络编制程序技艺计算》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总括》、《php mysql数据库操作入门教程》及《php常见数据库操作手艺汇总》

要么领会user变量是目的

愿意本文所述对我们基于smarty模板的PHP程序设计有着支持。

复制代码 代码如下:

你只怕感兴趣的篇章:

  • ThinkPHP模板中数组循环实例
  • ThinkPHP模板Volist标签嵌套循环输出多维数组的章程
  • ThinkPHP模板之变量输出、自定义函数与剖断语句用法
  • PHP 替换模板变量达成步骤
  • PHP模板引擎斯马特y中变量的施用格局言传身教
  • PHP模板引擎斯马特y之配备文件在模板变量中的使用方法自己要作为表率服从规则
  • PHP模板引擎斯Matty中的保留变量用法解析
  • PHP模板引擎Smarty内置变量调节器用法详解
  • thinkPHP调控器变量在模板中的显示方式身体力行
  • PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板成效示例

<if condition="$user:name neq 'ThinkPHP' "> ThinkPHP
<else /> other Framework
</if>

鉴于if标签的condition属性里面多数选拔的是php语法,尽恐怕使用判别标签和Switch标签会更加的简明,原则上的话,能够用switch和比较标签解决的尽心不用if标签实现。因为switch和相比标签可以动用变量调度器和系统变量。借使有个别特殊的渴求上边,IF标签仍旧无法满意要求的话,能够使用原生php代码大概PHP标签来直接书写代码。

eq 等于(==)
neq 不等于(!=)
gt 大于(>)
egt 大于等于(>=)
lt 小于(<)
elt 小于等于(<=)
heq 恒等于(===)
nheq 不恒等于(!==)
condition 条件
 
注意
condition 属性值中,变量是急需 $ 符号的,那与任何标签分裂。

动用自定义函数的办法

模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### }

接纳例子:

复制代码 代码如下:

{$webTitle|md5|strtoupper|substr=0,3}
{$number|number_format=2}
{$varname|function1|function2=arg1,arg2,### }

实举例下:

复制代码 代码如下:

function Cate($cid){
$Cate=D('Cate');
$Cate=$Cate->where('id='.$cid)->find();
return $Cate['title'];
}

自身想在模板中调用这些函数则在模板中得以这么写

复制代码 代码如下:

{$vo.cid|cate=###}

澳门新萄京,注意:自定义函数要放在项目利用目录/common/common.php中。 这里是重视。

说明:
{ 和 $ 符号之间不可能有空格,后边参数的空格就不曾难题;
###代表模板变量本身的参数地点 ;
协助两个函数,函数之间帮助空格 ;
支撑函数屏蔽成效,在配备文件中能够配备禁止行使的函数列表 ;
支撑变量缓存作用,重复变量字串不频仍剖判。

更加的多关于thinkPHP相关内容感兴趣的读者可查看本站专项论题:《ThinkPHP入门教程》、《thinkPHP模板操作手艺总计》、《ThinkPHP常用艺术总括》、《smarty模板入门基础教程》及《PHP模板技巧总括》。

指望本文所述对大家基于ThinkPHP框架的PHP程序设计具备协助。

您大概感兴趣的小说:

  • ThinkPHP模板中数组循环实例
  • ThinkPHP模板Volist标签嵌套循环输出多维数组的章程
  • PHP 替换模板变量完成步骤
  • PHP模板引擎斯马特y中变量的采取办法事必躬亲
  • PHP模板引擎Smarty之计划文件在模板变量中的使用办法亲自去做
  • PHP模板引擎斯马特y中的保留变量用法深入分析
  • PHP模板引擎Smarty自定义变量调治器用法
  • PHP模板引擎斯玛特y内置变量调节器用法详解
  • thinkPHP调控器变量在模板中的显示方式身体力行
  • PHP自定义函数完毕assign()数组分配到模板及extract()变量分配到模板功能示例

本文由澳门新萄京发布于www.澳门新萄京赌场,转载请注明出处:PHP模板引擎Smarty自定义变量调解器用法,ThinkPH

上一篇:澳门新萄京:Framework生成验证码并实现验证码验 下一篇:没有了
猜你喜欢
热门排行
精彩图文