Переменная PHP не распознается в коде разбивки на страницы DOMPDF

Я использую 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нет распознается в этой части кода и что я могу сделать, чтобы она работала?

Тест всегда возвращает false, что говорит о том, что в этот момент $lang либо не определен, либо выходит за рамки, либо, возможно, по умолчанию используется "en"?

Nick 18.12.2018 14:03

Я думаю, это проблема масштаба. Я не знаю кода DOMPDF, но, может быть, вам стоит определить эту переменную $ lang как глобальную? См. Этот вопрос: stackoverflow.com/questions/24776233/…

proprit 18.12.2018 14:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 072
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря двум комментариям @Nick и @proprit я столкнулся с проблемой сфера - вот что вызвало проблему. Я обнаружил, что если я добавлю 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>

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

Другие вопросы по теме