模版基础[1]

ThinkPHP 内置了一个基于 XML 的性能卓越的模版引擎 ThinkTemplate,

使用了动态编译和缓存技术,支持自定义标签库。

一. 变量输出

在模版中输出变量是非常容易的,使用 assign()方法,以键值对的方式传递变量和值。

在 Home/controller/UserController.class.php 中输入以下代码:

1 class UserController extends Controller {
2         public function index() {
3             $user=‘蜡笔小新‘;
4             $this->assign(‘user‘,$user);//第一个user是传给View/User/index.html中的user
5             $this->display();
6         }
7 }

然后在 View/User/index.html 中直接调用 {$user} 即可输出user的值。

模版编译后的结果是: <?php  echo ($user); ?> ,可以的 Runtime/Cache/Home 下查看

模版标签{和$之间不能用任何空格,否则无法解析。如果你想更换两个{}可以设置:

在 WeiBo/Common/Conf/config.php 中设置:

1 //修改默认标签
2 ‘TMPL_L_DELIM‘=>‘<{‘,
3 ‘TMPL_R_DELIM‘=>‘}>‘,

这样可以防止与javascript产生冲突。以后调用就是 <{$user}> ,也要注意中间不能有空格。

如果传递一个数组,我们直接传递过去后,通过两种方式调用:

在 Home/controller/UserController.class.php 插入以下代码:

1 class UserController extends Controller {
2         public function index() {
3             $data[‘user‘]=‘蜡笔小新‘;
4             $data[‘email‘]=‘[email protected]‘;
5             $this->assign(‘data‘,$data);
6             $this->display();
7         }
8 }

然后在 View/User/index.html 中调用方式有两种:

1 //第一种,直接加dot在中间
2 {$data.user}
3 //第二种,使用PHP本来的方法
4 {$data[‘email‘]}

但其实在  Runtime/Cache/Home  中显示可见,调用的时候,还是会转化为以PHP本来的方式调用的。

如果传递一个对象,我们直接传递过去后,通过两种方式调用:

首先在 Home/controller/UserController.class.php 中插入以下代码:

1 class UserController extends Controller {
2         public function index() {
3             $data=new \stdClass();
4             $data->user=‘蜡笔小新‘;
5             $data->email=‘[email protected]‘;
6             $this->assign(‘data‘,$data);
7             $this->display();
8         }
9 }

然后在 View/User/index.html 中调用方式有两种:

1 //第一种,用对象的方式调用
2 {$data->user}
3 //第二种,直接用冒号的方式
4 {$data:email}

但其实在 Runtime/Cache/Home 中显示可见,调用的时候,还是会转化为以对象的方式调用的。

二.系统变量

在模版中,不但可以输出 PHP 的系统变量,还可以输出 ThinkPHP 的系统变量。

在 View/User/index.html 中写入以下代码,则在 Runtime/Cache/Home 会自动编译为相应的php代码:

 1 {$Think.server.script_name}
 2 {$Think.session.admin}
 3 {$Think.get.user}
 4 {$Think.post.user}
 5 {$Think.request.user}
 6 {$Think.cookie.name}
 7
 8 {$Think.const.APP_PATH}
 9 {$think.config.url_model}
10 {$Think.lang.var_error}

在 Runtime/Cache/Home 显示为:

 1 <?php echo ($_SERVER[‘SCRIPT_NAME‘]); ?><br>
 2 <?php echo (session(‘admin‘)); ?><br>
 3 <?php echo ($_GET[‘user‘]); ?><br>
 4 <?php echo ($_POST[‘user‘]); ?><br>
 5 <?php echo ($_REQUEST[‘user‘]); ?><br>
 6 <?php echo (cookie(‘name‘)); ?><br>
 7
 8 <?php echo (APP_PATH); ?><br>
 9 <?php echo ($think["config"]["url_model"]); ?><br>
10 <?php echo (L("var_error")); ?><br>

三. 使用函数

如果有时,我们需要在模版中使用 PHP 函数的话,可以按照下面的格式使用:

在 View/User/index.html 中调用:

{$user|md5} ,这时输出的即为传过来的user并用md5加密

如果有多个参数要传递,可以参考如下设置:

1  {$date|date="Y-m-d H:i:s",###} 

PS:表示 date 函数传入两个参数,每个参数用逗号分割,这里第一个参数是 Y-m-d
H:i:s,第二个参数是前面要输出的 date 变量,因为该变量是第二个参数,因此需要用###
标识变量位置,编译后的结果是:

1 <?php  echo (date($date,"Y-m-d H:i:s")); ?>

首先在 Home/controller/UserController.class.php 中传入参数:

class UserController extends Controller {
        public function index() {
            $date=time();
            $this->assign(‘date‘,$date);
            $this->display();
        }
}

然后在 View/User/index.html 中写入:

1 {$date|date="Y-m-d H:i:s",###}

这时在 Runtime/Cache/Home 中显示的代码为:

1 <?php echo (date("Y-m-d H:i:s",$date)); ?>

浏览器输出的结果为当前的时间,格式为 Y-m-d H:i:s ,如果在 View/User/index.html 中的代码不加上###,则在 Runtime/Cache/Home 中显示为:

1 <?php echo (date($date,"Y-m-d H:i:s")); ?>

这时没有结果输出

前面输出变量,在后面定义,则不需要###

1 {$user|mb_substr=0,3,‘UTF-8‘}

这时在 Runtime/Cache/Home 中显示为:

1 <?php echo (mb_substr($user,0,3,‘UTF-8‘)); ?>

多个函数用"|"隔开即可

1 {$user|mb_substr=0,3,‘UTF-8‘|md5|sha1}

PS:如果你觉得以上写法需要在脑海里二次翻译,太过于麻烦,那么可以用以下的格式写法:

1 {:md5(mb_substr($user,0,3,‘UTF-8‘))}

很类似PHP的写法,就是必须在前面加上":"

当传递过来的变量如果没有值的时候,模版提供了默认值输出功能。

1 {$user|default=‘什么都没有!‘}

四.使用运算符

我们可以在模版中使用运算符,包括对“+”、“-”、“*”、“/”、“%”、“--”和“++”的支持。

在 Home/controller/UserController.class.php 写入以下代码:

1 class UserController extends Controller {
2         public function index() {
3             $data[‘num‘]=10;
4             $this->assign(‘data‘,$data);
5             $this->display();
6         }
7 }

然后在 View/User/index.html 写入调用代码:

1 {$data[‘num‘]+10}

还有一种是使用function法, Home/controller/UserController.class.php 中的代码不变, View/User/index.html  中写入以下代码:

1 {$data[‘num‘]+getNum()}  //getNum()是调用的函数

然后在 WeiBo/Common/Common/function.php 中写入以下getNum()的函数

1 function getNum() {
2     return 10;
3 }

这样返回时 $data[‘num‘] 也是加上10.

模版还支持三元运算符:

1 {$data[‘num‘]?‘有值‘:‘无值‘}
时间: 2024-11-03 22:37:01

模版基础[1]的相关文章

T4模版基础例子

<#@ template debug="false" hostspecific="true" language="C#" #> <#@ assembly name="System.Core" #> <#@ assembly name="EnvDTE" #> <#@ import namespace="System.Linq" #> <

PHP语言 -- Smarty模版基础

原理 class Smarty { public $url; //存放模版目录 public $attr; //存放临时变量数组 public $left = "{"//左定界符 publc $right ="}"//右定界符 //像数组里面存放变量(注册变量) function assing($key,$value) { $attr[$key] = $value; } //加载显示模版 function display($filename)//模版的路径 { //

模版基础[2]

一.包含文件 在一个系统中,可以包含通用的头文件和脚文件:header 和 footer.由于每个页面的头脚都是相同的,所以需要独立分离出来,再用包含文件引入他们.我们可以在 View 目录下 default 主题目录下创建一个 public 目录,这个目录专门存放公共调用模版文件. 我们在 View/default/User/index.html 写入的代码为: 1 <include file="Public/header" /> 2 3 这里是内容 4 5 <in

为什么不要特化函数模版?

/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm;

使用Visual Studio 2012 开发 Html5 应用

Visual Studio 一直以来是开发微软旗下应用的利器,只要是开发微软相关的应用无论是Windows程序,WPF,Asp.Net,WinRT Surface,WindowsPhone 等微软旗下的应用都可以使用Visual Studio 来开发.如果您已经非常习惯了Visual Studio 的UI和操作,是不是有时候也想使用Visual Studio 像DreamWeaver 一样来开发纯浏览器的Html5的应用呢? 后端您可以用Asp.Net,也可以使用非微软的技术如: Ruby on

ThinkPHP_3.2.1笔记

ThinkPHP入口文件 // 应用入口文件 // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); // 定义应用目录 define('APP_PATH','./Weibo/'); //设定目录生成的文件 define('DIR_SECURE_FILENA

疑惑:Windows 7 打上KB3159398补丁之后,GPMC基于用户对象的策略该何去何从?

以往,为了方便管理或者其它目的,我们将组策略中的用户策略通过GPMC下发(例如用户文件夹重定向),只需把这条策略链接至该用户的同级\上级OU,然后在"安全筛选"中选中该用户(或者用户所在的用户组).然而在去年10月,封装一个虚拟机模版时,更新了win7 pro sp1 x64的所有安全补丁,因为是在原有的模版基础上做更新,因此没有全面测试(一些必要的测试,也是用系统的本地管理员登录进行的),直接用这个模版创建新的虚拟机给同事使用,同事用域用户登录后,发现基于用户的所有策略全部失效!!!

Elementor编辑器 2018年最流行的WordPress页面构建插件

Elementor是一款非常现代的页面编辑器,作为2018年最流行的免费页面编辑插件,它改变了WordPress建站的方式,让我们可以无需代码便能自己构建网页 在本文中,我们将详细介绍Elementor及其使用方法,以帮助大家决定是否应该使用Elementor作为默认的WordPress页面构建工具 Elementor免费下载 为什么推荐使用Elementor 我曾经使用过很多款编辑器,其中,Elementor是非常优秀的一款 现代.简洁的编辑方式 免费版已经很好用 Elementor支持中文,

vue杂记

建立一个vue项目 1.先前往node官网下载node并安装好 2.安装vue脚手架,npm install --global vue-cli 3.vue init webpack projectname  //下载vue webpack模版基础项目 4.npm install下载依赖 5.启动服务 npm run dev 或者 npm start 6.安装MySQL驱动npm install mysql 7.安装封装node的express(类比jQuery)npm install expre