SOLVED: ошибка в файле шаблона
У меня есть настройка 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;
$output = $smarty->fetch("index.tpl"); echo $output;
выводит пустую страницу. И файл index.tpl, безусловно, содержит HTML.
Я забыл какой-то шаг или что?
Редактировать:
добавленной
ini_set('display_errors', true); error_reporting(E_ALL + E_NOTICE);
Также создан каталог конфигурации для Smarty.
И попробовал $output = $smarty->fetch("index.tpl"); var_dump($output)
$output = $smarty->fetch("index.tpl"); var_dump($output)
.
Еще чистая страница.
Если я echo "foo";
перед $smarty->display("index.tpl")
он выводит строку, но если я это сделаю после этого, он не выводит ее.
Измените разрешение каталога templates_c.
Предоставьте разрешение папки папке smarty / template_c.
Использовать команду
"chmod -R 0777 template_c"
Мой проект существует в папке
naveenos-MacBook-Pro:smarty nos$ chmod -R 0777 /Application/XAMPP/htdocs/smartyProject/lib/smarty/templates_c/
Вот и все.
Попробуйте добавить проверку ошибок на страницу
ini_set('display_errors', true); error_reporting(E_ALL + E_NOTICE);
Если это ничего не даст вам, попробую установить $smarty->config_dir
и $smarty->cache_dir
. Они могут понадобиться.
И, конечно же, убедитесь, что права на файлы для всех каталогов действительны и что SAFE_MODE выключен. (Это может испортить Smarty очень странным образом.)
У меня были дополнительные переменные {foo.bar}
(без $
) в файле шаблона, которые должны были быть реализованы позже в коде, предполагая, что Smarty просто заменит их пустым, я не думал, что это может быть причиной проблемы, но после их удаления он работал нормально.