废话就不说了,思路是这样的:
1. 先把smarty 类库引入项目目录中,建立好smarty 所需要的一些目录(编译目录、缓存目录等);
2. 在library 目录下新建一个文件Templater.php,这个文件中的Templater 类即是采用smarty 后的新的视图类,它继承自Zend_View_Abstract,注意在这个类中要根据smarty 的操作规则重写Zend_View_Abstract 的一些方法,这样的话,在控制器中我们还是使用Zend_View_Abstract 的视图操作方式但本质上却换成了smarty;
3. 在application/Bootstrap.php 文件的添加一个方法_initSmarty 以初始化smarty 并替代原来的模板显示机制;
4. 大功告成,在控制器上的操作与原来没有什么不同,不过此时已经是用smarty 来渲染视图了。
注意:本例中测试的Zend Framework 版本是1.9.x,其他版本可能需要做一些相应的调整。
下面附上一些主要的代码,有疑问的话可跟贴询问 ^_^
下面我们来做一个简单的测试。
先写一个简单的模板文件application/views/index/index.html:
然后是控制器文件application/controllers/IndexController.php:
访问相应的页面(例如 http://localhost/zendframeworkwithsmarty/ )即可看到Hello World 字样的输出。
一个常见的问题:如何在模板文件中获得项目基地址的引用?
这确实是一个必须要解决的问题,知道的基地址才能够正确的载入外部js/css 文件以及正确的实现页面间的跳转。
答:Zend_Controller_Front 类的getBaseUrl 方法可以获取项目基地址,但每次要先获取该实例再调用方法确实很麻烦,可以这样做,新建一个视图助手Zend_View_Helper_BaseUrl,在该视图助手类中定义一个方法(例如baseUrl)以获取基地址,这样在控制器中就可以通过$this->view 对象来调用该方法了($this->view->baseUrl())
参考至 《PHP Web 2.0开发实战》