《TP5.0学习笔记---模板变量输出、替换和赋值篇》
原文地址:http://blog.csdn.net/self_realian/article/details/75214922
模板变量输出、替换和赋值
我们看一下文件编译的结果,我们知道我们现在写的是一个html文件,但是我们当前的系统是php,我们的模板最终也会编译成php文件执行,输出我们想要的结果,它编译的文件在runtime/temp目录下,找到对应的编译文件
首先我们看见,如果我们在系统中没有定义“THINK_PATH”这个变量,就会退出,说明我们当前这个文件必须在ThinkPHP环境下才能执行,这样它就不呢直接访问我们的temp文件,来获取我们文件中的内容,上边的那个其实就是一个安全机制。紧接着就是我们编写的代码了。我们会看到 它把包裹变量的两个花括号变成了<?php 和 ?>.也就是说我们在模板中输出变量的花括号最终会被编译成PHP的<?php 和 ?>,然后里边是echo 出变量,这就是模板的执行流程。它首先让我们在html文件中编写正常的html,通过固定的标签来标记我们变量的开始和结束,之后在我们执行过程中,它会生成缓存或编译文件,最终我们程序其实是执行了那个编译文件。现在我们看一下,为什么我们使用花括号就能输出变量,能否使用其它的标记呢?
我们来看一下thinkphp的配置文件(convention.php),找到模板配置部分,直接拷贝到应用配置文件中
这两个就是定义模板的开始和结束的标记的,当然我们也可以改,但是不建议改,如果小伙伴们想试一下也是可以的,我这里就不截图了。(注意我们输出的变量和花括号中间是不能有空格的,否则不能正常输出变量的值)
接下来我们看看,还能使用哪些方式能对页面的变量赋值。我们知道我们可以通过fetch()的第二个参数赋值。第二种方式,之前也介绍过,可以通过$this->assign()的方法。第三种方法,是通过$this->view获取view对象,然后给view对象设置属性值,比如:$this->view->name =‘chen’
在ThibPHP5.0.4之后,在think下的view类中,为我们提供了一个静态方法,我们可以直接通过静态方法,来对我们的页面赋值
这几种给模板中分配变量的方式,同时可用。系统会将这四种方式传递的变量进行合并,统一向我们的页面中进行分配,这样我们就可以在我们的页面中使用这些值
我们知道,通过fetch()函数,我们可以传递第三个参数,第三个参数的key就是我们要替换的字符串,值就是我们替换之后把的内容
另外,我们可以通过修改配置文件中,进行修改,来统一的向我们所有的模板中进行一个变量替换的配置,我们依然打开convention.php
另外,我们可以通过修改配置文件中,进行修改,来统一的向我们所有的模板中进行一个变量替换的配置,我们依然打开convention.php
将它复制到应用配置文件中,然后进行修改
比如我想将 ‘__123__’修改成‘__一二三__’
可以这样配置
然后我们可以回到模板中直接进行输出
系统还提供了一些默认的字符串替换,比如__URL__(得到的是当前模块名和当前控制器名)、__STATIC__(得到的是/static也就是根下的static目录即public/static目录),thinkphp是一个单入口文件,所有的请求都会落到public/index.php,在我们安装好这个框架之后,public就会默认有一个static目录,我们之前介绍目录的时候介绍过,这个static目录是用来放静态文件的。我们在模板中经常会使用到static下的一些文件,比如说:css样式,js代码,图片等。我们就可以通过__STATIC__来代替/static目录。还有__JS__,它表示的是/static/js这个目录。__ROOT__,它表示的是框架所在的目录下的public目录,在我这里是/ThinkPHP5.0/public。__CSS__它表示的是/static/css目录
比如我们现在想使index.html这个页面变成红色,我们再static/css目录下写一个style.css文件,然后在index.html中引入该样式
当我们使用__CSS__这种系统定义好的常量,会给我们提供很大的方便。比如说我们不想将我们的样式放在public/static目录,我们只想直接放在根目录,也就是public目录下,比如说创建一个front目录,里边全放前端的样式。当我们修改了样式的位置之后,如果我们使用的是之前的那种传统的引入样式的方法,我们就需要修改我们整个项目的样式的路径,但是我们使用了__CSS__这种之后,我们只需要在我们的当前模块配置文件中进行修改即可,比如我们现在修改__CSS__默认对应的目录
这样我们在模板中使用__CSS__对应的就是/front/css目录。通过简单的配置就能改变项目中所有样式相关的路径,这对我们后期的维护是相当方便的。这些默认的替换在thinkphp/library/think/View.php
注意配置的读取顺序,也就是优先级。最先读取的是框架的默认配置,如果我们在对应的模块中对这些配置进行了修改,那么它最终会使用模块中的配置
《TP5.0学习笔记---模板变量输出、替换和赋值篇》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- WPF 中如何变相让 ListBox 宽度(Width) 100%,高度(Height) 100%,从而达到 Filled 的效果
直接贴代码了: XAML: <Window x:Class="HelloWorld.MainWindow" xmlns="http://schemas.micros ...
- 阿里开源 KT Connnect,轻量级云原生测试环境治理平台来啦!
作者| 阿里云技术专家 郑云龙(砧木) 目前越来越多的开发者开始采纳 Kubernetes 管理基础设施环境,并通过 Kubernetes 完成日常的开发,测试以及生产发布活动,为了能够有效的帮助开发 ...
- 通过Filebeat把日志传入到Elasticsearch
学习的地方:配置文件中预先处理字段数据的用法 通过Filebeat把日志传入到Elasticsearch Elastic Stack被称之为ELK (Elasticsearch,Logstash an ...
- 部署 asp.net 网站到 Azure
部署asp.net网站到Azure 前言 前些天一直在写一个单页面web应用程序,终于完成了,于是考虑发布到云服务器.本人没有AWS账号,遂本打算使用谷歌云.参考文档后发现官方文档给出的方式为在vis ...
- iis7 下配置 ASP.NET MVC 项目遇到的问题 (WIN7 64位 旗舰版 第一次配置站点)
转自 https://www.cnblogs.com/Leo_wl/p/3866625.html,再次感谢 指定的目录或文件在 Web 服务器上不存在. URL 拼写错误. 某个自定义筛选器或模块(如 ...
- JavaScript Date 日期属性和方法
JavaScript 日期(Date) Date对象用于处理日期和时间.使用对象new Date()创建日期.实例化日期有四种方式: var d1 = new Date(); var d2 = new ...
- maven 学习---NetBeans IDE集成Maven
NetBeans6.7更新版本已经内置对Maven支持.如遇以前的版本,Maven插件在插件管理器中可用.我们正在使用NetBeans在这个例子中使用6.9. 在NetBeans一些特点如下 您可以从 ...
- sparkSQL中的example学习(3)
UserDefinedTypedAggregation.scala(用户可自定义类型) import org.apache.spark.sql.expressions.Aggregator impor ...
- jquery实现一些小动画二
jquery实现一些小动画二 jquery实现拖拽功能 <!DOCTYPE html> <html lang="en"> <head> < ...
- ES6的相关语法
1.ES6的兼容性 常用的是babel(也叫做browser.js); 用法: 直接在script中引用,把相应的script里面的type设置为text/babel 2.箭头函数 注意:1.如果只有 ...