内置标签[1]

ThinkPHP 模版中的内置标签,所谓内置标签就是模版引擎 提供的一组可以完成控制、循环和判断功能的类似 HTML 语法的标签。

一. 判断比较

ThinkPHP 内置了 IF 标签用于在模版中进行条件判断。

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

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

然后在 View/User/index.html 中写入以下代码:

 1 <html>
 2 <head></head>
 3 <body>
 4
 5 <if condition="$user eq ‘蜡笔小新‘">
 6     小新
 7     <elseif condition ="$user eq ‘黑崎一护‘" />
 8     一护
 9     <else />
10     错误
11 </if>
12
13 </body>
14     

编译后在 Runtime/Cache/Home 里看到的编译后的代码为:

 1 <?php if (!defined(‘THINK_PATH‘)) exit();?>
 2 <html>
 3 <head></head>
 4 <body>
 5
 6 <?php if($user == ‘蜡笔小新‘): ?>小新
 7     <?php elseif($user == ‘黑崎一护‘): ?>
 8     一护
 9     <?php else: ?>
10     错误<?php endif; ?>
11
12 </body>
13 </html>

也就是输出时,ThinkPHP自动编译为PHP原生的代码:

PS:condition 属性中支持 eq 等判断表达式,由于会导致模版解析混淆,所以不支持“>”、“<”等表达式,但是支持"="

1 //condition 条件里可以使用 PHP 函数
2 <if condition="mb_substr($user,0,3,‘UTF-8‘) eq ‘蜡笔小‘">
1 //condition 条件里使用点语法,智能判断数组或对象
2 <if condition="$data.user eq ‘蜡笔小新‘">
1 //condition 条件里使用冒号语法,直接使用对象
2 <if condition="$data:user eq ‘蜡笔小新‘">

这是当如果是表单提交过来的user是“蜡笔小新”,则符合条件,

也可是 http://localhost/demo39/Home/User/index.html?user=蜡笔小新 ,这样也能得到user的变量

1 //condition 条件里使用系统变量
2 <if condition="$Think.get.user eq ‘蜡笔小新‘">

PS:由于 if 标签的 condition 属性里面基本上使用的是 php 语法,尽可能使用判断标签
Switch 标签会更加简洁,原则上来说,能够用 switch 和比较标签解决的尽量不用 if 标签
完成。因为 switch 和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,

IF 标签仍然无法满足要求的话,可以使用原生 php 代码或者 PHP 标签来直接书写代码。

在 View/User/index.html 中写入以下代码:

 1 <html>
 2 <head></head>
 3 <body>
 4
 5 <switch name="user">
 6     <case value="蜡笔小新">小新</case>
 7     <case value="黑崎一护">一护</case>
 8     <default/>错误
 9 </switch>
10
11 </body>
12 </html>    

需要注意的是: <switch name="user"> 中的user前面是没有“$”符号的。

这时 Runtime/Cache/Home 中的编译为:

1 <?php switch($user): case "蜡笔小新": ?>小新<?php break;?>
2     <?php case "黑崎一护": ?>一护<?php break;?>
3     <?php default: ?>错误<?php endswitch;?>

也就是在编译时会自动加上  break; 语句

默认情况下,case 会自动添加 break 语句防止穿透,如果你就是想要穿透,那么可以去
除 break。当然,绝大部分不需要设置 break。

1 //去除 break
2 <case value="蜡笔小新" break="0">小新</case>

这时 <case value="黑崎一护">一护</case> 中没有加上 break="0" ,但是浏览器中还是会输出:

ThinkPHP 提供了一组比较标签用于简单的变量比较,复杂的判断条件可以用 IF 标签替换。

比较标签

比较标签 含义
eq 或 equal  等于
neq 或 notequal 不等于
gt 大于
egt 大于等于
lt 小于
elt  小于等于
heq 恒等于
nheq 不恒等于
1 //控制器变量$user=蜡笔小新,输出小新
2 <eq name="user" value="蜡笔小新">小新</eq>

PS:name 的值和 IF 语句一样,可以是变量、数组、对象、函数或系统变量,其他比较标签使用方法类似,这里不在赘述。

比较标签还提供了一个统一标签 compare,比较类型通过 type 属性完成。

1 //compare 统一方法
2 <compare type="eq" name="user" value="蜡笔小新">小新</compare>

ThinkPHP 提供了一组范围判断标签:in、notin、between、notbetween 四个标签,都用
于判断变量是否在某个范围中。

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

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

然后在 View/User/index.html 中的代码为:

1 <in name="id" value="1,2,3">
2     id在范围内
3     <else />
4     id不在范围内
5 </in>

notin 标签,正好相反

Home/controller/UserController.class.php 中的代码是一样的,然后在 View/User/index.html 中的代码则是相反的:

1 <notin name="id" value="1,2,3">
2     id不在范围内
3     <else />
4     id在范围内
5 </notin>

between标签,从哪里到哪里的范围

Home/controller/UserController.class.php 中的代码是一样的,然后在 View/User/index.html 中的代码如下:

1 <between name="id" value="1,10">
2     id在范围内
3     <else />
4     id不在范围内
5 </between>

notbetween标签,从哪里到哪里的范围

Home/controller/UserController.class.php 中的代码是一样的,然后在 View/User/index.html 中的代码如下:

1 <notbetween name="id" value="1,10">
2     id在范围内
3     <else />
4     id不在范围内
5 </notbetween>

range标签,可以统一in、notin、between和notbetween

Home/controller/UserController.class.php 中的代码是一样的,然后在 View/User/index.html 中的代码如下:

1 <range name="id" value="1,2,3" type="in" >
2     id在范围内
3     <else />
4     id不在范围内
5 </range>

name值可以是系统变量

这时是不需要  Home/controller/UserController.class.php 中的代码的,然后在 View/User/index.html 中的代码如下:

1 <in name="Think.get.id" value="1,2,3">
2     id在范围内
3     <else />
4     id不在范围内
5 </in>

注意,这时的 name 中的 Think 前是不要加上"$"符号的,然后在url后加上 ?id=1 ,

整个的url的形式为: http://localhost/demo39/Home/User/index.html?id=1

value值可以是变量或系统变量

Home/controller/UserController.class.php 中的代码是一样的,然后在 View/User/index.html 中的代码如下:

1 <in name="id" value="$Think.get.range">
2     id在范围内
3     <else />
4     id不在范围内
5 </in>

记住这时的 value 中的 Think 前面是要加上"$"符号的,这时所在的范围是 $Think.get.range ,

则我们可以在url的最后加上 ?range=1,2,3 ,整个url为: http://localhost/demo39/Home/User/index.html?range=2,3,4 ,即可测试成功

时间: 2024-10-13 17:59:17

内置标签[1]的相关文章

Jsp的内置标签和jstl标签

1.内置标签(动作标签) 内置标签不需要再jsp页面导入标签 1).forward:请求的转发,格式如下 <%-- 作用与这个相同 <%request.getRequestDispatcher("/forward2.jsp?name=gqxing").forward(request, response); %> --%> <jsp:forward page="/forward2.jsp"> <jsp:param value=

django中模板变量与内置标签以及过滤器

本文参考 官方文档 . 一  模板变量 格式: {{ variable_name }} variable_name   命名规则与变量命名规则类似,允许字符数字下划线,不允许标点. variable_name后面可以跟dot  .  以此来访问变量的属性.查询顺序: 字典查询 属性或者方法查询: 若为方法查询,则要求该方法不需要传入任何参数.调用该方法后,会将该方法返回的结果赋予该变量. 数字索引查询 二  内置标签 格式: {% tag %} 1  block  定义一个可以被子模板覆盖的区域

ThinkPHP中的内置标签

ThinkPHP中的内置标签 1.内置标签分类 闭合标签 <tag></tag> 开放标签 <tag /> 2.包含文件标签 主要功能:实现对文件的包含(类似于require或include) 基本语法: <include?file="模板文件名"?/> 特别注意:include标签中模板文件的路径是基于项目的入口文件(index.php)位置. 案例:实现项目首页功能 ① 在View视图模板中,创建一个Public文件夹,作为公用文件夹

内置标签[2]

一.遍历循环 ThinkPHP 内置标签提供了 Volist 标签.Foreach 标签和 For 标签. 在 Home/controller/UserController.class.php 中插入一下代码: 1 class UserController extends Controller { 2 public function index() { 3 $user = M('User'); 4 $this->assign('data',$user->select()); 5 $this-&

学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签. jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签 1.内置标签(动作标签): <jsp:forward />转发标签: 语法:<jsp:forward page="

JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标签及文本 2. 脚本:写JAVA代码,<% %> 3. 表达式:用于输出变量及表达式,<%= %> 4. 注释:分为三种 a) <!-- --> :JSP翻译成Servlet时也将进行翻译.页面中也有. b) <% /*.......*/ %>:JSP翻译成Se

Hexo 添加自定义的内置标签

灵感 想设计一个记录自已骑行的页面,显示时间.地点.路线图等信息.方便以后做一些留念.定位想实现下面类似的效果.参考:<特效>      实现方案也比较简单,反键查看源码.直接Copy,在加之改造即可.下面所述的方式是怎么提高代码的复用性.(内置标签) 简单实现 查看源码发现大致结构代码如下: <div class="location"> <i class="location-icon" style="opacity: 1;

使用原生js自定义内置标签

使用原生js自定义内置标签 效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA

视图 模板渲染 过滤器(内置) 标签

今日内容 视图 视图加装饰器 模板渲染 过滤器(内置) 标签 视图 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了 FBV和CBV 视图 FBV(函数类) FBV(function base views) 就是在视图里使用函数处理请求