首页 理论教育使用全功能Smarty实战:扩展方式

使用全功能Smarty实战:扩展方式

【摘要】:在11.1.2节中,已经介绍过ThinkPHP虽然可以切换到Smarty模板引擎,但这种切换方式是指标签解释的方式上,并不包括Smarty模板扩展功能。但可以通过ThinkPHP扩展的方式引入Smarty,从而实现全功能的Smarty模板引擎。本章接下来的全部内容基于ThinkPHP+Smarty环境。读者在实验时可以使用普通的模板代码,这里只是为了减少代码量,方便讲解,对Smarty的功能介绍并无影响。图13-4 在ThinkPHP中使用Smarty

在11.1.2节中,已经介绍过ThinkPHP虽然可以切换到Smarty模板引擎,但这种切换方式是指标签解释的方式上,并不包括Smarty模板扩展功能。所以使用TMPL_ENGINE_TYPE切换方式,只能使用Smarty的基础解释功能,而不能使用Smarty特有的扩展功能,例如注册函数、注册对象等。而Smarty灵活及强大之极就在于扩展机制。但可以通过ThinkPHP扩展的方式引入Smarty,从而实现全功能的Smarty模板引擎。具体方法读者可参考11.1.2节。

配置完成后,只需要在项目conf目录中创建confing.conf配置文件即可,该文件用于直接在模板中获取配置数据。这样ThinkPHP就具备全功能的Smarty环境了。

本章接下来的全部内容基于ThinkPHP+Smarty环境。继续以mobile项目作为演示用例,此时通过http://tp.localhost/mobile.php网址将能够访问到该项目。index动作代码如下所示。

978-7-111-42852-7-Part02-752.jpg

可以看到index控制器不再继承于Action类,而是继续于PublicAction类。该类是一个自定义的项目成员控制器,用于全局控制,代码如下。

978-7-111-42852-7-Part02-753.jpg

这里的Smarty引擎是ThinkPHP提供的,如果读者需要最新版本的Smarty,只需要覆盖Smarty目录即可。也可将Smarty存放于当前项目扩展目录,然后使用import函数导入即可。index动作对应的index.html模板文件如以下代码所示。(www.chuimin.cn)

978-7-111-42852-7-Part02-754.jpg

978-7-111-42852-7-Part02-755.jpg

上述代码是一个基于JqueryMobile的手机页面代码,并且使用Smarty标签及语法。读者在实验时可以使用普通的模板代码,这里只是为了减少代码量,方便讲解,对Smarty的功能介绍并无影响。运行效果如图13-4所示。

978-7-111-42852-7-Part02-756.jpg

图13-4 在ThinkPHP中使用Smarty