首页 后端开发 php教程 ThinkPHP框架之视图_PHP教程

ThinkPHP框架之视图_PHP教程

Jul 14, 2016 am 10:12 AM
smarty thinkphp view 构成 框架 模块 模板 组件 视图 项目

一、视图

 

1、 视图组件的构成:

 

1) 视图类

 

View类

Smarty类

 

2) 模板

 

Tpl/项目/模块/***.html

 

视图类负责读取模板内容,并实现字符串替换,最终再输出给用户

 

2、 模板定义

 

默认的模板文件定义规则:

 

模板目录/[分组名/]模块名/操作名+模板后缀

 

TMPL_TEMPLATE_SUFFIX

 

一般情况下,模板的后缀大体使用以下几种:

 

.html

.htpl

.tpl

 

3、 分隔符

 

因为每个模板设计者的习惯不同,有的人习惯使用“{}” 有的人使用   {**}

 

在配置文件中,可以设置以下两个配置选项,表示配置模板的分隔符

 

 'TMPL_L_DELIM'=>'

 'TMPL_R_DELIM'=>'}>',

 


 

4、 模板赋值以及输出

 

1)    $this->assign(‘模板变量名’,变量);

         $var = '手机';
       
        $this->assign('var',$var);
       
        $this->display('test');


2)    $this->assign(数组变量);

     

 
   

   

        $var = '手机';
       
        $this->assign('var',$var);
       
        $arr['price'] = 33.3;
        $arr['address'] = '北京';
        $this->assign($arr);
        $this->display('test');
    }

 

 

3)$this->display(‘操作名’)

       当前模块下的指定操作名.html模板

4)$this->display(‘模块:操作名’); //模板是可以跨模块调用的


       引用指定模块下的指定的操作名.html模板

5)$this->display(‘操作’,’输出编码’,’输出类型’);

 


       //跨模块输出
        $this->display('User:login','utf-8','text/html');

 

 

 

5、 模板替换(模板常量)

 在项目中经常要引用css、js、图片的资源需要引用。


__PUBLIC__:当前网站的公共目录

__APP__: 当前项目的URL地址

 __GROUP__:当前分组的URL地址

__URL__:当前模块的URL地址

__ACTION__:当前操作的URL地址

 

在tp中的模板里,可以使用以上模板常量,它们表示不同的字符串,一般在需要引用url时,可以用到以上常量

 

默认来讲:如果我们访问:

 

Localost/index.php/home/product/test,这时模板如使用了__PUBLIC__模板常量,那么它的值指向了apache的htdocs目录下,但是如果我们有多项目,这时会有冲突,如何解决?

 

解决之道:

 

1) 修改配置文件

 

在配置文件中,可以配置一个叫TMPL_PARSE_STRING选项,它可以定义在模板使用的模板常的值

 


 

然后,在模板中,可以这样来引用当前项目下的资源文件:

 


 

2) 配置虚拟主机

 

打开host文件:


打开httpd.conf

 

 


 

将上面的配置选项之前的#去掉

 

打开httpd-vhosts.conf文件,添加新的虚拟主机设置

 


 

重启apache

 

Localhost---àapache/htdocs/

 

Tp.com-----àapache/htdocs/tp/

 

6、 获取内容

 

$this->fetch();

 


 

Display:读取模板、替换内容、输出

Fetch:读取模板、替换内容、返回字符串(主要用于生成静态页)

 

 

二、模板

 

1、 模板注释:

 

l  {/* 注释内容 */ }

 

l  {// 注释内容 }

 

Tp中的模板注释主要是给模板设计者或程序设计者来看的

 

2、 变量输出:

 

程序向模板中赋值

 

普通变量

       $name

数组变量

       $row

对象变量

       $obj

 

代码示例:

 

Php程序:

 


 

模板程序:

 


 

 

 

 

 

 

 

3、 系统变量   (模板中的系统变量)

 

l  $Think.server        $_SERVER

l  $Think.get               $_GET

l  $Think.post             $_POST

l  $Think.request         $_REQUEST

l  $Think.cookie          $_COOKIE

l  $Think.session         $_SESSION

l  $Think.config          读取配置文件      

 

 


 

4、 使用函数

 

l  格式

 

       {$name|fn1|fn2=arg1,arg2,###}

 


 

5、 默认值

 

{$变量|default="默认值"}

 


 

6、 运算符

 

l  +              {$a+$b}

l  -        {$ab}

l  *              {$a*$b}

l  /        {$a/$b}

l  %             {$a%$b}

l  ++            {$a++} 或  {++$a}

l  --              {$a--}  或 {--$a}

 


 

7、 内置标签

 

l  闭合标签


l  开放标签

 

8、 包含文件

 

 

是基于项目的入口文件位置。

 

./Tpl/Admin/Public/header.html

 

我们将网页公共部分放到header.html和footer.html两个公共模板页中,在主页中使用include进行引用

 


 

 

 

上面在引用文件时,路径过长,如何解决?

 

 

l  格式:

      

 

       file(必须):资源文件

       type(可选):资源文件类型,默认为js

 

       起始路径是网站的Public(__PUBLIC__)目录

       采用命名空间方式

       目录.目录.文件名

 


 

10、             volist标签

 

用于遍历数组元素

 

l  格式:

 

      

              {$vo.id}

              {$vo.name}

      

 

l  name(必须):要遍历的数组变量

l  id(必须):当前数组元素

l  offset:     要输出数据的offset

l  length:    输出数据的长度,需要指定offset

l  key: 循环索引   key的值默认为 i

 


 

 

11、             foreach标签

 

用于遍历数组变量

 

语法:

              {$vo.id}

              {$vo.name}

 

Name :要遍历的数组变量

Item:用于保存当前元素的变量名

 

如果有特殊需求,使用volist,否则使用foreach

 


12、             for标签

 

              {$i}

 

属性:

l  start(必须):循环变量开始值

l  end(必须):循环变量结束值 (不包括)

l  name(可选):循环变量名,默认值为i

l  step(可选):步进值,默认值为1

 


 

13、             switch标签

 

l  格式:

              输出内容1

输出内容2

默认情况

 


 

14、             empty标签

 

name为空值

 

15、             assign标签

 

16、             if标签

 

l  if

l  elseif

l  else

 


 

判断时,需要使用以下连接符

 

l  eq或者 equal:等于

l  neq 或者notequal:不等于

l  gt:大于

l  egt:大于等于

l  lt:小于

l  elt:小于等于

l  heq:恒等于

l  nheq:不恒等于

 

17、             使用php代码

 

1)echo “hello”;

2)


 

在配置文件中,有一个选项可以控制第二种方法是否可用


TMPL_DENY_PHP 可以禁用第二种方法

 

建议:尽量少在模板中使用php代码


 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477228.htmlTechArticle一、视图 1、 视图组件的构成: 1) 视图类 View类 Smarty类 2) 模板 Tpl/项目/模块/***.html 视图类负责读取模板内容,并实现字符串替换,最终...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1238
24
如何评估Java框架商业支持的性价比 如何评估Java框架商业支持的性价比 Jun 05, 2024 pm 05:25 PM

评估Java框架商业支持的性价比涉及以下步骤:确定所需的保障级别和服务水平协议(SLA)保证。研究支持团队的经验和专业知识。考虑附加服务,如升级、故障排除和性能优化。权衡商业支持成本与风险缓解和提高效率。

PHP 框架的学习曲线与其他语言框架相比如何? PHP 框架的学习曲线与其他语言框架相比如何? Jun 06, 2024 pm 12:41 PM

PHP框架的学习曲线取决于语言熟练度、框架复杂性、文档质量和社区支持。与Python框架相比,PHP框架的学习曲线更高,而与Ruby框架相比,则较低。与Java框架相比,PHP框架的学习曲线中等,但入门时间较短。

C++ 模板在实际开发中常见应用有哪些? C++ 模板在实际开发中常见应用有哪些? Jun 05, 2024 pm 05:09 PM

C++模板在实际开发中广泛应用,包括容器类模板、算法模板、泛型函数模板和元编程模板。例如,泛型排序算法可对不同类型数据的数组进行排序。

PHP 框架的轻量级选项如何影响应用程序性能? PHP 框架的轻量级选项如何影响应用程序性能? Jun 06, 2024 am 10:53 AM

轻量级PHP框架通过小体积和低资源消耗提升应用程序性能。其特点包括:体积小,启动快,内存占用低提升响应速度和吞吐量,降低资源消耗实战案例:SlimFramework创建RESTAPI,仅500KB,高响应性、高吞吐量

如何解决使用ThinkPHP6和elasticsearch-php客户端连接Elasticsearch 8时的cURL error 77问题? 如何解决使用ThinkPHP6和elasticsearch-php客户端连接Elasticsearch 8时的cURL error 77问题? Mar 31, 2025 pm 11:36 PM

在使用ThinkPHP6框架结合elasticsearch-php客户端操作Elasticsearch...

ThinkPHP6路由:如何完整获取包含中文等特殊字符的URL参数? ThinkPHP6路由:如何完整获取包含中文等特殊字符的URL参数? Apr 01, 2025 pm 02:51 PM

ThinkPHP6路由参数中文处理及完整获取在ThinkPHP6框架中,处理包含特殊字符(如中文及标点符号)的URL参数,常常...

如何为不同的应用场景选择最佳的golang框架 如何为不同的应用场景选择最佳的golang框架 Jun 05, 2024 pm 04:05 PM

根据应用场景选择最佳Go框架:考虑应用类型、语言特性、性能需求、生态系统。常见Go框架:Gin(Web应用)、Echo(Web服务)、Fiber(高吞吐量)、gorm(ORM)、fasthttp(速度)。实战案例:构建RESTAPI(Fiber),与数据库交互(gorm)。选择框架:性能关键选fasthttp,灵活Web应用选Gin/Echo,数据库交互选gorm。

Java框架学习路线图:不同领域中的最佳实践 Java框架学习路线图:不同领域中的最佳实践 Jun 05, 2024 pm 08:53 PM

针对不同领域的Java框架学习路线图:Web开发:SpringBoot和PlayFramework。持久层:Hibernate和JPA。服务端响应式编程:ReactorCore和SpringWebFlux。实时计算:ApacheStorm和ApacheSpark。云计算:AWSSDKforJava和GoogleCloudJava。

See all articles