DOMPDF的分页代码未识别的PHP变量



我正在使用dompdf使用户将单个页面保存为pdfs。

这是一个双语网站(德语/英语)。在生成页面的body标签的顶部,我使用以下代码(主要是从DOMPDF示例文件复制),该代码包含一个IF/else子句,以用德语或英语在每个页面上生成自动化页码:

<script type="text/php">
        if ( isset($pdf) ) {
            // v.0.7.0 and greater
            $x = 36;
            $y = 24;
            if($lang == "de") {
                $text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
            } else {
                $text = "page {PAGE_NUM} of {PAGE_COUNT}";          
            }
            $font = $fontMetrics->get_font("helvetica", "regular");
            $size = 6;
            $color = array(0,0,0);
            $word_space = 0.0;  //  default
            $char_space = 0.0;  //  default
            $angle = 0.0;   //  default
            $pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
        }
    </script>

因此,输出应为" seite x von x"或" x"页",具体取决于 $lang的值。

在此之前,我根据用户的浏览器设置定义$lang变量,该设置具有类似的IF/else子句,既可以是" de"(德语)或" en"(英语,如果浏览器语言不是德语)并使用作为决定内容是用德语还是英语输出的条件。

在代码中进一步下降,此操作(使用PHP条件)。只有上面代码中的自动分页似乎无法识别$lang变量 - 输出始终以英语为单位。

但它是打印的,这表明PHP代码已解析。

我的问题是:为什么$lang变量未在代码的那一部分中识别,我该怎么做才能使它起作用?

感谢@nick和@proprit的两个评论,我被带到了 scope 的问题 - 这就是引起问题的原因。我发现,如果在情况下添加global $lang;,它可以正常工作。因此,代码必须是:

<script type="text/php">
     if ( isset($pdf) ) {
        // v.0.7.0 and greater
        $x = 36;
        $y = 24;
        global $lang;/* this is the only thing I added */
        if($lang == "de") {
            $text = "Seite {PAGE_NUM} von {PAGE_COUNT}";
        } else {
            $text = "page {PAGE_NUM} of {PAGE_COUNT}";          
        }
        $font = $fontMetrics->get_font("helvetica", "regular");
        $size = 6;
        $color = array(0,0,0);
        $word_space = 0.0;  //  default
        $char_space = 0.0;  //  default
        $angle = 0.0;   //  default
        $pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
      }
    </script>

感谢您的帮助!

最新更新