Smarty выводит пустую страницу - PullRequest
5 голосов
/ 19 декабря 2009

решено: ошибка в файле шаблона

У меня Smarty настроен так:

require_once 'smarty/Smarty.class.php';
$smarty = new Smarty();

$smarty->compile_dir = $compile_dir;
$smarty->template_dir = $tpl_dir;

Это все, что мне нужно на данный момент ... У меня точно такая же настройка Smarty для другого сайта, и она отлично работает на том же сервере.

var_dump($smarty) выводит все свои общедоступные переменные, а $smarty->template_exists("index.tpl") возвращает 1, что указывает на то, что Smarty правильно настроен и работает, однако как $smarty->display("index.tpl"), так и $output = $smarty->fetch("index.tpl"); echo $output; выводит пустую страницу. И файл index.tpl, безусловно, содержит HTML.

Я забыл какой-то шаг или что?

Edit:

Добавлена ​​

ini_set('display_errors', true);
error_reporting(E_ALL + E_NOTICE);

Также создан каталог конфигурации для Smarty.

И попробовал $output = $smarty->fetch("index.tpl"); var_dump($output).

Все еще пустая страница.

Если я echo "foo"; до $smarty->display("index.tpl") выводит строку, но если я делаю это после нее, она не выводит.

Ответы [ 4 ]

10 голосов
/ 25 октября 2012

Изменить разрешение каталога templates_c.

3 голосов
/ 28 сентября 2016

Дать разрешение на доступ к папке smarty / template_c.

Я использую Mac, поэтому выполните следующие действия:

  • Открытый терминал
  • Перейти в папку htdocs
  • Перейти к проекту
  • Перейти к Smarty lib
  • Использовать команду

    "chmod -R 0777 template_c"
    

Мой проект существует в папке

    naveenos-MacBook-Pro:smarty nos$ chmod -R 0777 /Application/XAMPP/htdocs/smartyProject/lib/smarty/templates_c/

Вот и все.

0 голосов
/ 01 января 2010

У меня были дополнительные {foo.bar} (без $) переменные в файле шаблона, которые должны были быть реализованы позже в коде, предполагая, что Smarty просто заменит те на пустые. проблема, но после их удаления все работало нормально.

0 голосов
/ 19 декабря 2009

Попробуйте добавить проверку ошибок на вашу страницу

ini_set('display_errors', true);
error_reporting(E_ALL + E_NOTICE);

Если это ничего не дает, я бы попробовал установить атрибуты $smarty->config_dir и $smarty->cache_dir. Они могут быть необходимы.

И, конечно же, убедитесь, что права доступа к файлам для всех каталогов действительны, а SAFE_MODE выключен. (Это может испортить Smarty очень странными способами.)

...