【问题标题】:PHP Pear HTML-IT doesn't render after migrating from PHP5 to PHP7从 PHP5 迁移到 PHP7 后,PHP Pear HTML-IT 不呈现
【发布时间】:2020-08-07 14:12:44
【问题描述】:

我最近将一个古老的 PHP 应用程序从 2004 年移到了新安装的 Linux 主机上。最初它是用 PHP4 编写的,但它在 PHP5 上没有任何修改就可以工作。

现在使用 PHP7 和 Phar 渲染 Pear HTML_Template_IT 存在问题。非工作代码如下所示

<?php
require_once("HTML/Template/IT.php");

class Layout_normal
{


    function __construct($views)
    {
        $this->views = $views;
        $Tt = new HTML_Template_IT("../tpl");
        $Tt->loadTemplatefile("layoutNormal.tpl");
        foreach($views as $view => $data)
        {
            if($view == "main") {
                $Tt->setVariable("PAGE", $data);
            }
            elseif($view == "help")
            {
                $Tt->setCurrentBlock("help");
                $Tt->setVariable("HELP", $data);
                $Tt->parseCurrentBlock();
            }
            elseif($view == "pagename") $Tt->setVariable("PAGENAME", $data);
            elseif($view == "active") $active = $data;
            elseif($view == "module") $module = $data;
       }
       $Tt->setVariable("MENU", $this->getMenu($view));
       $Tt->setVariable("TOPMENU", $this->getMenu($view));

       $this->page = $Tt->get();
   }

   // some more methods here

}
?>

从该代码变量 {{PAGE}} 按预期呈现,但 {{MENU}} 和 {{TOPMENU}} 未呈现。相同的代码适用于旧的 PHP5 环境。

【问题讨论】:

    标签: php templates pear html-templates


    【解决方案1】:

    原因是当当前块设置为“帮助”$Tt-&gt;setCurrentBlock("help"); 时,它从未从那里返回。所以在这里添加最后一行解决了这个问题:

                elseif($view == "help")
                {
                    $Tt->setCurrentBlock("help");
                    $Tt->setVariable("HELP", $data);
                    $Tt->parseCurrentBlock();
                    $Tt->setCurrentBlock("__global__"); // <- THIS DID THE MAGIC
                }
    

    在 PHP5 中,您不需要将 __global__ 设置回当前块,但在更新到 PHP7 和更新版本的 Pear(Phar,确切地说是 API 版本 1.1.1)之后,您需要这样做。

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 2021-01-28
      • 2020-03-09
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2016-09-24
      • 2021-05-15
      相关资源
      最近更新 更多