图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
在ThinkPHP中,允许使用include标签包含页面。与PHP的include不同,在模板中使用include对引擎的解释过程不受任何影响,就算被包含的文件不存在也不会被中断执行。合理地使用include可以让页面变得整洁,整站的模板维护更加容易,但滥用include标签也会造成代码灾难,降低模板的通用性。ThinkPHP还提供了import标签及load标签,这些标签作用类似,但也有各自的适用对象,下面分别介绍。
1.include标签
这里的include标签与PHP的include语句不同,模板中的include模板只能解释静态的html等文件,而不能直接包含PHP文件,使用过shtml的读者应该会熟悉<!--#include file=""top.html""-->语句,该语句通常用于包含第三方文件,例如广告代码、页面导航、版权说明等。这里的include标签和shtml中的include语句作用是一样的,只不过形式不一样而已。一条最简单的include标签语句如以下代码所示。
这里需要注意的是,include包含的静态文件必须位于当前网站下,不能是一个URL,该文件是一个完整的文件路径,通常从入口文件算起。另外URL模式尽量不要使用自定义的URL REWRITE模式,否则目录层级有可能发生改变,导致include找不到文件。
include标签不仅可以包含完整路径的静态文件,也可以包含控制器动作。前面已经介绍过,一个控制器动作就相当于一个页面,所以使用include标签是允许直接包含控制器动作的(动作必须使用this->display()输出模板)。如以下代码所示。
以上代码表示包含当前控制器的head动作,如果head动作不在当前控制器,那么需要使用“:”分隔符,如以下代码所示。
在包含文件的同时,include标签还支持向目标页面传递额外的变量参数,这些参数会被模板引擎解释成PHP变量,如以下代码所示。
将要传递的参数附加到file属性值即可,这些参数可以在目标页面head.html文件中使用“[]”符号进行配对,如以下代码所示。(www.chuimin.cn)
利用这些特性,设计人员可以方便地在页面中嵌入外部网页,实现页面布局、广告系统等实用的功能。使用include标签关键是网站的URL模式,读者需要计算好路径;过多地包含控制器动作会导致代码维护困难;在部署时,如果被包含的页面发生了改变,那么需要开发者手动删除当前视图模板缓存,否则将看不到最终效果。
2.import标签
import标签与include标签一样都可以引用外部文件,但import标签具有针对性,import标签最常用于导入JavaScript或CSS文件,通过属性type指定文件的类型就可正确地导入文件,避免了手动编写脚本的步骤,提高了界面的整洁性。如以下代码所示。
import标签在解释路径时,使用“.”代替“/”,默认的路径由Public目录开始算起,文件不需要后缀名。如上面的Js.Util.Array,解释后的路径为/Public/Js/Util/Array.js。import支持一次性导入多个文件,多文件之间使用“,”分隔符。
import标签通过属性type指定需要导入的文件类型,默认导入JavaScript脚本文件,更改type属性值可以改变导入的文件类型,如type=”css”。
import标签以包的形式导入网站中公共静态资源文件,如果需要导入第三方网站或者使用显式的路径资源文件,可以使用load标签,该标签的使用方式和import标签一样,如以下代码所示。
虽然默认的模板引擎提供了灵活方便的文件导入标签,但如前面所述一样,这些标签最终都是转换成标准的HTML代码,使用导入标签虽然一定程度上提高了开发效率,但页面中太多的标签一起使用也需要牺牲运行效率。
有关PHP MVC开发实战的文章
图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
电子邮件发送是网站开发中重要的功能,典型的应用场景有会员注册、邮件订阅、密码找回等。事实上,主流的邮件系统都是基于SMTP验证的,并且支持Socket连接。所以开发人员可以直接在PHP中使用fsockopen函数向服务器提交数据,SMTP默认情况下会监听25号通信端口,如果校验通过,邮件系统会直接执行Socket发送的命令,完成邮件处理。ThinkPHP本身没有内置邮件发送扩展,接下来将使用第三方扩展类库实现邮件发送。表11-3 SendMessage配置选项其中邮件配置项必须为mail元素值。......
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
在ThinkPHP模板中需要使用“|”分隔符引入函数,然后使用“=”号来为函数赋参。在模板中调用formatTime自定义函数和调用PHP内置的函数是一样的。这里只是简单地演示在模板中怎样使用函数,在实际应用开发中,读者可根据需要在模板标签中引入函数。在ThinkPHP模板引擎中,使用函数嵌套的顺序由左到右,即模板引擎最先解释左边的函数,最终的结果由最右边的函数决定,如以下代码所示。......
2023-11-04
接下来将介绍Zend Framework的安装与使用。由于Zend Framework使用PDO对数据库进行操作,搭建好运行环境后还必须手动开启相应的PDO功能。完成后就能够进行Zend Framework程序开发了。......
2023-11-04
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2023-11-04
在数据库开发中,查询和插入数据是同等重要的,ThinkPHP对数据的插入、更新等都做了高度封装,系统提供create方法,用于创建数据对象。图7-2 create创建数据流程2.create数据操作前面介绍了create方法的运行过程,读者只需要理解即可,在实际应用开发中创建数据的过程是极其简单的。下面将结合示例代码,介绍create方法的实际应用,加深对create方法的认识。一切完成后,此时数据对象存放于内存中,使用add方法进行提交,完成整个create创建数据的过程。......
2023-11-04
首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。......
2023-11-04
相关推荐