模版引擎详解-兄弟连新版thinkphp 15、16

第15节:ThinkPHP 3.1.2 模板变量详解

1、模版基本使用

IndexAction里添加index方法,内容为:

$this->assign(‘name‘,‘赵桐正‘);  // 将值“赵桐正”交给标识“name”

$this->display();   //显示模版,Tpl文件夹下默认index.html

Tpl下的模版index.html里显示模版变量name的值

{$name}

模版变量的值是由后台分配过来的。



2、模版变量输出:

  支持标量输出;字符串、数字、bool等

  支持常规数组输出;

(在index方法中,添加数组,$arr = array(‘a‘,‘b‘); $this->assign(‘name‘,$arr);

在模版中,{$name[0]}; 则会输出‘a)

  支持关联数组输出;

($arr = array(‘k1‘=>‘a‘,‘k2‘=>‘b‘);

{$name[‘k1‘]}; 则会输出a;

 另外,关联数组还可以使用{$name.k1}也能同样输出)

  支持对象输出;

  $obj= new test; $this->assign(‘name‘,$obj);

  {$name:k} 或者 {$name->k} //k是对象里的一个属性



3、系统变量

  在模版中直接获取系统变量的值,如POST GET SESSION SERVER等值

$Think.get.name; 模版可以直接读取地址栏里默认为get提交的数据 :index/name/ztz

$Think.session.id;输出session变量里的id

$Think.const.APP_NAME; 输出常量里的APP_NAME



4、使用函数

  例如在模版中对传递过来的值进行md5加密:{$name|md5}  它在编译时会自动变成 <?php echo (md5($name)); ?>

  例如时间戳处理显示。time=time();   {$name|date=‘Y-m-d H:i:s‘ , ### } 其中###是占位符,编译时被$name替换。

  在Runtime的Cache文件里有编译代码。



5、默认值

设置默认值 {$name|default=‘默认‘} 若$name未赋值,则取默认值



6、运算符

+ - * / % ++ --

{$name++}



第16 17 18节:ThinkPHP 3.1.2 模板中的语法知识

一、导入CSS和JS文件

1、传统导入方式:

  CSS:<link rel=‘stylesheet‘ type=‘text/css‘ href=‘__PUBLIC__/Css/test.css‘/>

  JS: <script src=‘__PUBLIC__/Js/test.js‘></script>

  其中,__PUBLIC__会自动被模版引擎替换成路径:在项目所在同级目录下创建文件夹Public,内部创建Css和Js两个文件夹。然后在Css里建立test.css、test.js即可调用。

2、import标签导入外部CSS和JS:

  <import type=‘css‘ file=‘Css.test‘ />

  <import file=‘Js.test‘ /> import默认是js文件,可以省略 type属性

注意:若CSS JS文件夹不是放在Public文件夹内,而是同级的其他(My文件夹)文件夹内。在模版调用时要设置 basepath=‘./My/‘

即:<import type=‘css‘ file=‘Css.test‘ basepath=‘./My‘  />

3、load标签 自动检测css或js,只需要地址

<load href=‘__PUBLIC__/Css/test.css‘  />



二、分支结构

  1、在模版中使用 if else

逻辑判断符:  gt >;lt <;eq =;elt <=;egt >=;neq !=;heq ===;

g:greater;l:less;eq:equal

<if condition = ‘$name eq 男 ‘>
    男人是泥巴做的
    <else /> //单标签
    女人是水做的
</if>
<if condition = ‘$age lt 18‘>
    未成年
    <elseif condition=‘$age eq 18‘ />
    青春年少
    <else />
    成年
</if>


  2、switch case

<switch name=‘number‘>
    <case value=‘1‘>1个</case>
    <case value=‘2‘>2个</case>  <default/>这里是默认值
</switch>


三、循环结构

  1、for

  <for start=‘0‘ end=‘10‘>  {$i} </for>循环执行十次。

  循环变量名 默认为 $i。

  完整用法: <for start="开始值" end="结束值" step="步进值" name="循环变量名" comparison="lt">  </for>   (comparison为判断条件。lt为正序,gt为逆序)



  2、volist 数组遍历

//遍历一维数组$arr=array("a1","b2","c3","d4");
$this->assign("list",$arr);
<volist name=‘list‘ id=‘v‘>
    {$v}<br/>
</volist>

a1b2c3d4
//遍历二维数组$arr[0]=array(‘id‘=>1,‘username‘=>‘ztz‘);
$arr[1]=array(‘id‘=>2,‘username‘=>‘ztz2‘);
$this->assign(‘list‘,$arr);
//每次取是一个数组,现在我只取username
<volist ame=‘list‘ id=‘v‘>
    {$v.username}<br/>
<volist>

ztzztz2

  3、foreach数组遍历 比volist简单

$arr=array(‘k1‘=>‘v1‘,‘k2‘=>‘v2‘,‘k3‘=>‘v3‘);
$this->assign(‘list‘,$arr);
<foreach name=‘list‘ item=‘v‘ key=‘k‘>
    {$k}-->{$v}<br/>
</foreach>

k1-->v1k2-->v2k3-->v3

使用foreach打印数据库内容(二维数组$arr):

$mytable=M(‘mytable‘);
$arr=$mytable>select();
$this->assign(‘list‘,$arr);
//使用表格形式打印出数据库内容//v是取出的一个一维数组
<table>
    <foreach name=‘list‘ item=‘v‘>
        <tr>
                <td>{$v.id}</td>
                <td>{$v.username}</td>
                <td>{$v.password}</td>         <if condition="$v.sex eq 1">          <td>男</td>         <else/>          <td>女</td>
        </tr>
    </foreach>
</table>    


四、特殊标签

  1、比较标签

eq  lt  gt  ngt等

<eq name=‘n‘ value=‘10‘>等于10<else/>不是10</eq>

  2、范围标签

in 从某些值中挑选出一个

between 在某个范围内

<in name=‘n‘ value=‘1,2,3,4,5‘>
    {$n}在1,2,3,4,5这些数里面
<else/>不在1,2,3,4,5这些数里面
</in>
 
<between name=‘n‘ value=‘1,10‘>
    {$n}在1-10之间
<else/>不在1-10之间
</between>
 

  3、Present标签

  判断模版变量是否已经赋值。

<present name=‘n‘>n有赋值<else/>n没有赋值</present>

  4、Empty标签判断模版变量是否为空。

  Define标签定义模版常量。

  Assign标签对模版变量进行赋值。



五、其他标签

建议在配置文件中修改左右定界符,修改配置文件。防止与css js变量冲突

‘TMPL_L_DELIN‘->‘<{‘,

‘TMPL_R_DELIN‘->‘>}‘,

模版引擎详解-兄弟连新版thinkphp 15、16

时间: 2024-10-28 07:24:02

模版引擎详解-兄弟连新版thinkphp 15、16的相关文章

Cocos2d-x3.0模版容器详解之——cocos2d::Vector&lt;T&gt;, cocos2d::Map&lt;K,V&gt;, cocos2d::Value

Cocos2d-x3.0模版容器详解之一:cocos2d::Vector<T>  http://www.cocoachina.com/bbs/read.php?tid=199793Cocos2d-x3.0模版容器详解之二:cocos2d::Map<K,V>  http://www.cocoachina.com/bbs/read.php?tid=199916Cocos2d-x3.0模版容器详解之三:cocos2d::Value  http://www.cocoachina.com/b

36 web系统架构及cache基础、varnish4基础应用、varnish状态引擎详解及vcl

02 varnish4基础应用 配置环境: node1 CentOS7.2 192.168.1.131 [[email protected] ~]# yum -y install varnish [[email protected] ~]# vim /etc/varnish/varnish.params 修改 VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G" 为 VARNISH_STORAGE="ma

Cocos2d-x3.0模版容器详解之三:cocos2d::Value

1.概述 版本: v3.0 beta 语言: C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCValue.h" 的头文件中. ? 1 class Value; cocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vector<Value>, std::unordered_map<s

如何查看mysql数据库的引擎/MySQL数据库引擎详解

一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎:mysql> show engines; 看你的mysql当前默认的存储引擎:mysql> show variables like '%storage_engine%'; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):mysql> show create table 表名; MySQL数据库引擎详解 作为Java程序员,MySQL数据库

Qt5串口编程详解【新版】

Qt5的串口比Qt4的好用得多,Qt4的貌似没有集成官方库. 之前我也写过Qt5的串口,不过有一些缺陷,这次试图改进.转载请保留链接:http://blog.csdn.net/qq363692146/article/details/26049355 本文发表于2014.5.17. 如果在linux下,记得使用root权限,可以用root权限打开可执行文件,或者用root权限打开Qt Creator.(原因是串口常常需要特权,有些串口有特权也只能度而不能写,这个可能是Qt本身的问题)[至于安卓端,

Android研究之为基于 x86 的 Android* 游戏选择合适的引擎详解

摘要 游戏开发人员知道 Android 中蕴藏着巨大的机遇. 在 Google Play 商店的前 100 款应用中,约一半是游戏应用(在利润最高的前 100 款应用中,它们所占的比例超过 90%). 如要跻身该市场,开发速度非常关键. 一些刚起步的独立开发人员更愿意从零开始来开发自己的所有代码:但是为了达到更高的质量而不用花费数年的时间进行开发,其他人可能会选择已有的游戏引擎.上章研究了英特尔 Android* 开发人员指南上的对等应用详解,在选择引擎时,你可以考虑以下几个因素: 成本 - 你

【Java】Lucene检索引擎详解

基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究.他贡献出的Lucene的目标是为各

Django 模版语言详解

一.简介 模版是纯文本文件.它可以产生任何基于文本的的格式(HTML,XML,CSV等等). 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. 例: {% extends "base_generic.html" %} {% block title %}{{ section.title }}{% endblock %} {% block content %} <h1>{{ section.title }}</h1> {% for story in s

兄弟连新版ThinkPHP视频教程1.ThinkPHP 3.1.2 介绍及安装

老师给咋们这么好的礼物,咋可不能浪费^_^记在博客上方便以后查阅 ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.ThinkPHP的介绍            //了解    MVC        M - Model 模型                工作:负责数据的操作        V - View  视图(模板)        工作:负责前台页面显示        C - Controller 控制器