Переменная PHP не распознается в коде пагинации DOMPDF - PullRequest
0 голосов
/ 18 декабря 2018

Я использую DOMPDF, чтобы пользователи могли сохранять отдельные страницы в формате PDF.

Это двуязычный веб-сайт (немецкий / английский).Вверху тега 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», либо «page X of X», в зависимости от значения $lang.

. До этого яЯ определяю переменную $lang в зависимости от настроек браузера пользователя с помощью аналогичного условия if / else как «de» (немецкий) или «en» (английский, если язык браузера НЕ немецкий) и использую его как условие длярешить, будет ли содержимое выводиться на немецком или английском языке.

Далее в коде это работает как задумано (с использованием условий PHP).Похоже, что автоматическое разбиение на страницы в приведенном выше коде не распознает переменную $lang - вывод всегда на английском языке.

Но это напечатано , что показывает, что PHP-код анализируется.

Мой вопрос: почему переменная $lang не распознается в этой части кода, и что я могу сделать, чтобы он работал?

1 Ответ

0 голосов
/ 18 декабря 2018

Благодаря двум комментариям @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>

Спасибо за помощь!

...