Я использую 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
нет распознается в этой части кода и что я могу сделать, чтобы она работала?
Я думаю, это проблема масштаба. Я не знаю кода DOMPDF, но, может быть, вам стоит определить эту переменную $ lang как глобальную? См. Этот вопрос: stackoverflow.com/questions/24776233/…
Благодаря двум комментариям @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>
Спасибо за помощь!
Тест всегда возвращает false, что говорит о том, что в этот момент
$lang
либо не определен, либо выходит за рамки, либо, возможно, по умолчанию используется"en"
?