6月14 视图

在MainController.class.php中新建方法Test,并在view中新建Test/Test.html

如下所示:

1.变量输出:与smarty的相似

public function Test()
    {
        $attr = array("one"=>100,"two"=>200);
        $this->assign("shuzu",$attr);
        $this->assign("test","hello");
        $this->display();
    }

模板的内容:(数组显示的两种方法)

<body>
<!--<h1>不要乱访问,不存在test方法,当没有test方式时候</h1>-->
<h1>测试页面</h1>
<div><{$test}></div>
<div><{$shuzu.one}></div>
<div><{$shuzu["two"]}></div>
</body>
</html>

运行后的结果:

1.1.系统变量输出

普通的模板变量需要首先赋值后才能在模板中输出,但是系统变量则不需要,可以直接在模板中输出,系统变量的输出通常以

双下划线开头的是直接可以输出的(常量输出的两种方法)

<body>
<h1>测试页面</h1>

<div>__ACTION__</div>
<div><{$Think.const.ACTION_NAME}></div>
<div><{$Think.MODULE_PATH}></div>

</body>
</html>

显示效果:

1.2配置输出

配置名不区分大小写

<div><{$Think.config.URL_MODEL}></div>

输出结果:1

1.3默认值输出

例如:

<div><{$ceshi|default="这个家伙很懒,没有传值"}></div>
<div><{$user.nickname|default="这家伙很懒,什么也没留下"}></div>
<div><{$Think.get.name|default="名称为空"}></div>

显示效果:

1.4运算符

public function Test()
    {
        $this->assign("a",10);
        $this->assign("b",15);
        $this->display();
    }

模板代码

<div><{$a*$b}></div>

显示结果为:150

特别注意:在使用运算符的时候,不再支持点语法和常规的函数用法

2模板继承

模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层。模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载。

因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块。

每个区块由<block></block>标签组成。

在main目录中新建文件:fu.html和zi.html

如下所示:

在MainController.class.php中新建方法zi

public function zi()
    {
        $this->display();
    }

fu.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<block name="top">
<div>这是头部信息</div>
</block>

<block name="content">
<div>这是内容</div>
</block>

<block name="footer">
<div>这是底部信息</div>
</block>

</body>
</html>

zi.html(完全继承自父模板的)

<extend name="fu" />

显示效果:

修改中间内容部分的继承

zi.html(只修改要改变的部分)

<extend name="fu" />
<block name="content">
<div style="width:100%; height:200px; background-color:#0CC; color:#FFF; font-size:20px; line-height:200px">这是我的改变</div>
</block>

显示效果:

3.三元运算符

注意:三元运算符中暂时不支持点语法。

public function Test()
    {     $this->assign("pd",false);$this->display();
    }

html模板代码:

<div><{$pd?"男":"女"}></div>

运行结果:女

4.包含文件

在当前模版文件中包含其他的模版文件使用include标签,标签用法:

<include file=‘模版表达式或者模版文件1,模版表达式或者模版文件2,...‘ />

使用模版表达式

模版表达式的定义规则为:模块@主题/控制器/操作

html模板代码

<include file="Main/zi" />

显示效果:(虽然显示效果一样但是访问的方法是不同)

5.内置标签

  5.1  if标签(这个必须要会),注意条件的写法(双引号里面)

在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析

与之前不同:smarty时<{if}><{/if}>而现在<if></if>,注意else后/  <else/>

<if condition="$a==10">
<div>$a与10相等,$a之前注册</div>
<else/>
<dv>不相等</div>
</if>

显示效果:

5.2Foreach标签

foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如: {$vo.id}:{$vo.name}

name表示数据源 item表示循环变量。

foreach遍历数组name的值为变量名(数组名),item的值为循环出的每一项的值

<foreach name="shuzu" item="v" >
<div><{$v}></div>
</foreach>

显示效果:

5.3  volist 标签

volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模版赋值:

5.4  For 标签

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,

其他是可选。comparison 的默认值是lt;;name的默认值是i,步进值的默认值是1,

5.5  switch case 标签

使用方法:

5.6  范围判断标签

范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。

5.7 import 标签:导入外部JS和CSS文件的方法

6.原样输出:可以使用<literal></literal>标签来防止模板标签被解析

7. 模版注释

模板支持注释功能,该注释文字在最终页面不会显示,仅供模板制作人员参考和识别。

8.模版替换

时间: 2024-10-15 01:39:26

6月14 视图的相关文章

2017年8月14日套题记录 | 普及组

写在前面 今天登洛谷发现离Noip剩下88天了??(虽然看起有点久),然后觉得似乎水了一个暑假什么也没做(虽然学了点数据结构和一些奇奇Gaygay的东西),于是打开题库发现去年Long Happy的集训套题我似乎没有提交过,那就一天一套题,顺便码个题解+心得(雾? T2.传作业 题目描述 某十三同学一日上学迟到,此时已经开始上早自习了,所以他只好请同学帮忙把作业传到组长那里.由于刚开学不久,某十三同学还没来得及认识所有同学,所以传作业时只好找熟悉的同学.已知某十三与组长之间有N个他熟悉的同学,并

2017年3月14日下午日志

2017年3月14日下午复习了高等数学,观看了张宇高等数学第八讲教学视频线性代数部分的运算方法的方法,积累了更多学习技巧,对线性代数部分的行列式和矩阵的概念和性质有了了解,并做书上例题1.1-1.5,晚上背英语单词100个.

Fedora 24 Linux系统将于6月14日正式发布

去年11月3日,Fedora Project发布了Fedora 23,时隔7个月,Fedora 24也将正式降临.最新消息显示,目前Fedora 24 Linux操作系统的研发已经接近尾声,计划将于6月14日正式发布. 据悉,Fedora 24基于Linux 4.5内核,搭载最新GNOME 3.20.Xface 4.12和KDE Plasma 5.6桌面环境,除了数款系统软件和核心组件获得升级外,该系统还预装了LibreOffice 5.1.3和Mozilla Firefox 46.0.1浏览器

【美】丹 ? 西蒙斯 - 海伯利安的陨落(2015年1月14日)

<海伯利安的陨落> 作 者:[美]丹 ? 西蒙斯译 者:潘振华 李懿系 列:海伯利安出 版:读客图书字 数:511千字阅读完成:2015年1月14日

冲刺阶段(二)第四天 5月14日

昨天:通过上网以及老师的课件,学习项目可行性报告的详细写法,对于这类文档的书写有了更深一层的认识,在此过程中,对本软件也有了一些新的想法,在以后的软件编写过程中会有选择性的将部分功能添加进去,是软件功能更加完善. 今天:通过对Android视频TabHost以及Menu的学习,对Android的人是更加深刻,并学会了更多的新的功能.通过上网和查询老师课件,学会了软件详细文档的书写,能够系统地把握文档书写的脉络. 困难:对于一些流程图的规范书写还不能够熟练掌握. 冲刺阶段(二)第四天 5月14日,

5月14日 绿城育华NOIP巨石杯试卷解析

[题外话] 感谢UBUNTU为保存程序做出贡献:https://paste.ubuntu.com : 感谢洛谷OJ的私人题库保存题面:https://www.luogu.org : 现在我的题解的所有程序均保存在UBUNTU上,需要时单击超链接查看 : 由于题目的不确定性,现在所有测试数据的建立全部来自于参加本次巨石杯的选手 OYCY & LSH 下面的程序为本人程序,暂且未知评测状态,会有误差,会及时更正!!! 5月14日 绿城育华NOIP巨石杯试卷解析 T1 最大的最小 [地址]https:

3月14日作业

2016年3月14日作业: 一.项目管理一般知识 第四章:项目管理一般知识1.核心知识域有哪些.保障域有哪些?伴随域有哪些?过程域有哪些? 答:核心知识域包括:整体管理.范围管理.进度管理.成本管理.质量管理和信息安全管理: 保障域包括:人力资源管理.合同管理.采购管理.风险管理.信息(文档)与配置管理.知识产权管理.法律法规标准规范和职业道德规范. 伴随域包括:变更管理.沟通管理: 过程域包括:科研与立项.启动.计划.实施.监控和收尾等.监控过程可发生在项目生命周期的任一阶段.2.有效的项目管

付海棠 - 一个农民的亿万传奇(2015年7月14日)

<一个农民的亿万传奇> 作 者:付海棠  沈良译 者:系 列:出 版:中国经济出版社字 数:260千字阅读完成:2015年7月14日

【System Log】7月14日—7月29日

本日志由系统自动生成. 从7月14日起便按照心想事成的节奏进入了实验室.打酱油.周末又去学活值班,生活的框架还是很不错的. 1.基于Hadoop的Flume,zooKeeper,这些东西算是明白了个大概. 2.第一周大概学习了javascript.jquery.css.ci框架(php)这些基本的东西,然后大概搭了个大创网站的架子出来. 3.第二周周末开始写android,答应别人要开发的一个小游戏,但是写着写着就觉得压力大写不出来. 4.中间还抽时间看了程杰的大话设计模式,和一些人ctf的wr