关于thinkphp3.2中使用smarty模板success调转失败的解决办法

时间:2022-09-24 17:17:23

  tinnkphp3.2刚刚发布不久,在带来新功能的同时,也增加了一些不稳定性,下面就我个人遇到的问题,来说说。

  在更换Smarty模板时,我发现在使用success跳转时,会产生如下问题:

关于thinkphp3.2中使用smarty模板success调转失败的解决办法

会提示我们模板解析错误。因为在更换模板时,Controll父类中的success方法会调用 $this->dispatchJump($message,1,$jumpUrl,$ajax);这个调转方法跳转到相应的 模板页面,也就是ThinkPHP/Tpl/dispatchJump.tpl这个模板,因为这个模板是Thinkphp引擎的,所以造成无法解析的错误,应此我们只需要不让他跳转,直接在success中显示即可,

因此直接将dispatchJump.tp中的HTML代码复制到success中,修改其变量即可:代码如下

      */
    protected function success($message='',$jumpUrl='',$ajax=false) {
        $waitSecond='3';
$info=<<<eof
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微软雅黑'; color: #333; font-size: 16px; }
.system-message{ padding: 24px 48px; }
.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
.system-message .jump{ padding-top: 10px}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px }
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
<div class="system-message">
<present name="message">
<h1>:)</h1>
<p class="success">$message</p>
</present>
<p class="detail"></p>
<p class="jump">
页面自动 <a id="href" href="$jumpUrl">跳转</a> 等待时间: <b id="wait">$waitSecond</b>
</p>
</div>
<script type="text/javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
    var time = --wait.innerHTML;
    if(time <= 0) {
        location.href = href;
        clearInterval(interval);
    };
}, 1000);
})();
</script>
</body>
</html>


eof;
echo $info;
exit();
         //$this->dispatchJump($message,1,$jumpUrl,$ajax);
    }


换有一点要注意,在原模板文件中紫色框中有 有一个判断,会引起一些错误,只需删掉即可;

关于thinkphp3.2中使用smarty模板success调转失败的解决办法


这样我们就可以了

关于thinkphp3.2中使用smarty模板success调转失败的解决办法


  虽然暂时解决了问题,但很有很多不足,希望TP官方能够尽快修改这个bug,这样会为开发者节省不少时间!