扩展模块Smarty使用说明

DoitPHP的smarty extension是调用smarty模板引擎,进行程序开发的扩展模块。注:DoitPHP的视图机制已经很完善,无须第三方模板引擎,不过有些大型的开发团队可能要用到(主要是团队老大要求)。特此编写了本模块。

模块安装

下载smarty扩展压缩包,解压(很自然的事情),放置于扩展目录中(extensions)。保证smarty主文件路径:application/extensions/smarty/smarty-2.1/Smarty.class.php 。

使用方法

1、在Controller文件中重定义initView()类方法,代码如下:

  1. /**
  2. * 实例化Smarty.
  3. *
  4. * @access protected
  5. * @return object
  6. */
  7. protected function initView() {
  8.  
  9. return $this->ext('smarty');
  10. }

如果想让程序效率运行更高一点,可以直接加载并实现化smarty。代码如下:

  1. /**
  2. * 实例化Smarty.
  3. *
  4. * @access protected
  5. * @return object
  6. */
  7. protected function initView() {
  8.  
  9. //文件加载
  10. $filePath = BASE_PATH . '/extensions/smarty/smarty-2.1/Smarty.class.php';
  11. Doit::loadFile($filePath);
  12.  
  13. $smarty = $this->instance('Smarty');
  14.  
  15. $smarty->template_dir = BASE_PATH . '/views/';
  16. $smarty->compile_dir = CACHE_PATH . '/views/';
  17. $smarty->cache_dir = CACHE_PATH . '/data/';
  18. $smarty->config_dir = BASE_PATH . '/config/';
  19.  
  20. return $smarty;
  21. }

然后,这个重定义initView()的Controller文件中的Action类方法中在对视图文件处理时,就可以直接使用Controller提供的类方法。实例代码如下:

  1. public function indexAction() {
  2.  
  3. $this->assign('content', '你好,这是一个Smarty扩展实例');
  4.  
  5. $this->display('index/index.html');
  6. }

其视图文件路径为:application/views/index/index.html, 内容为:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>实例:Smarty扩展</title>
  6. </head>
  7.  
  8. <body>
  9. {$content}
  10. </body>
  11. </html>

原文: http://www.doitphp.com/index/documentation/?articleid=59