Smarty 由 2.X升级到3.X遇到的问题

时间:2023-12-16 20:00:02

首先这是一个大概4年前做的PHP项目,使用的是Zend Framework 1 + Smarty 2 , 已经很多年没有动过了,

最近抽风了,把这个项目要玩改版。拿出来改改吧。

ZF 升级2这事,还是再考虑一下。毕竟项目结构要改变。

Smarty由2升级为3还是可以考虑一下。

 

下载最新版Smarty ,主要是为了使用它自带的支持类似于.net MVC 中的layout特性。当然ZF有Layout,但以前就是直接用Smarty,就直接升级吧。

 

遇到的问题。

  • ZF整合的过程中,发现 Smarty2与Smarty 3的代码改动不小,直接使用原来Smarty2与ZF的整合方式不行了。换吧,参考:

http://gediminasm.org/post/smarty-3-extension-for-zend-framework

 

  • 原来在Smarty 2 中如果不赋值,就按空或False来进行处理了。但Smarty3要求已经严格了,只要不赋值就给出警告,为了改动小些,在smarty实例化后,加入一行 $this->_smarty->error_reporting = E_ALL & ~E_NOTICE; 这是一个XX的办法,不值得推荐。就先凑合着吧。

 

  • 如果打算使用 {php}{/php} 这个标签,那就使用 SmartyBC class 吧。

    require_once 'Smarty/SmartyBC.class.php';
            $this->_smarty = new SmartyBC ();

     

  • 2中 如果使用{include file=header.tpl}是没有问题的,在3中就要 加上引号了{include file=’header.tpl’}
  • 2 中 {url a.controller=aaaa a.action=bbbb username=$username}  升级到3 , {$this->url([‘controller’=>’aaaaa’,’action’=>’bbbbb’,’username’=>$username])}