What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Table of Contents
Smarty может ловить многие ошибки, например отсутствующие атрибуты тэгов или недопустимые имена переменных. Если это произойдет, вы увидите ошибку наподобие следующей:
Example 17.1. Ошибка Smarty
Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah' in /path/to/smarty/Smarty.class.php on line 1041 Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name in /path/to/smarty/Smarty.class.php on line 1041
Smarty покажет вам имя шаблона, номер строки и ошибку. Далее сообщение об ошибке состоит из фактического номера строки в классе Smarty, где возникла ошибка.
Есть определенные ошибки, которые не может поймать Smarty, например отсутствующие закрывающие тэги. Такие ошибки обычно приводят к ошибкам разбора PHP на этапе компиляции.
Example 17.2. Ошибки разбора PHP
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
Когда вы встречаетесь с ошибкой разбора PHP, номер строки, в которой
допущена ошибка, будет соответствовать скомпилированному PHP-скрипту,
а НЕ самому шаблону. Обычно вы можете посмотреть на шаблон и увидить
синтаксическую ошибку. Типичные ошибки: отсутствующие закрывающие тэги
для
{if}{/if}
или
{section}{/section}
,
или синтаксис логики внутри тэга {if}
.
Если вы не можете найти ошибку, вам может понадобиться открыть
скомпилированный PHP-файл и перейти к номеру строки чтобы выяснить,
в чём заключается ошибка в шаблоне.
Example 17.3. Другие частые ошибки
Warning: Smarty error: unable to read resource: "index.tpl" in... or Warning: Smarty error: unable to read resource: "site.conf" in...
Значение
$template_dir
неверно, эта директория не существует или файл
index.tpl
не найден в директории
templates/
.
В шаблоне присутствует функция
{config_load}
(либо была вызвана функция
config_load()
)
и значение
$config_dir
неверно, эта директория не существует или файл
site.conf
находится за пределами этой
директории.
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, or is not a directory...
Переменная
$compile_dir
установлена неверно, эта директория не существует
или templates_c
является файлом, а не
директорией.
Fatal error: Smarty error: unable to write to $compile_dir '....
У веб сервера нет прав на запись в директорию
$compile_dir
.
Смотрите конец страницы
Базовая установка
для получения информации о правах доступа.
Fatal error: Smarty error: the $cache_dir 'cache' does not exist, or is not a directory. in /..
Это означает, что параметр
$caching
включен, но параметр
$cache_dir
установлен неправильно, эта директория не существует
или cache/
является файлом, а не
директорией.
Fatal error: Smarty error: unable to write to $cache_dir '/...
Это означает, что параметр
$caching
включен, но
у веб сервера нет прав на запись в директорию
$cache_dir
.
Смотрите конец страницы
Базовая установка
для получения информации о правах доступа.
См. также
Отладочная консоль,
$error_reporting
и
trigger_error()
.