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 can catch many errors such as missing tag attributes or malformed variable names. If this happens, you will see an error similar to the following:
Example 17.1. Smarty errors
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 shows you the template name, the line number and the error. After that, the error consists of the actual line number in the Smarty class that the error occured.
There are certain errors that Smarty cannot catch, such as missing close tags. These types of errors usually end up in PHP compile-time parsing errors.
Example 17.2. PHP parsing errors
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
When you encounter a PHP parsing error, the error line number will
correspond to the compiled PHP script, NOT the template itself. Usually
you can look at the template and spot the syntax error. Here are some
common things to look for: missing close tags for
{if}{/if}
or
{section}{/section}
, or syntax of logic within an {if}
tag. If you
can't find the error, you might have to open the compiled PHP file and
go to the line number to figure out where the corresponding error is in
the template.
Example 17.3. Other common errors
Warning: Smarty error: unable to read resource: "index.tpl" in... or Warning: Smarty error: unable to read resource: "site.conf" in...
The
$template_dir
is incorrect, doesn't exist or
the file index.tpl
is not in the
templates/
directory
A
{config_load}
function is within a template (or
config_load()
has been called) and either
$config_dir
is incorrect, does not exist or
site.conf
is not in the directory.
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, or is not a directory...
Either the
$compile_dir
is incorrectly set,
the directory does not exist, or templates_c
is a
file and not a directory.
Fatal error: Smarty error: unable to write to $compile_dir '....
The
$compile_dir
is not writable by the web server.
See the bottom of the
installing smarty page
for more about permissions.
Fatal error: Smarty error: the $cache_dir 'cache' does not exist, or is not a directory. in /..
This means that
$caching
is enabled and either;
the
$cache_dir
is incorrectly set, the directory does not exist,
or cache/
is a
file and not a directory.
Fatal error: Smarty error: unable to write to $cache_dir '/...
This means that
$caching
is
enabled and the
$cache_dir
is not writable by the web server. See the bottom of the
installing smarty page
for permissions.
See also
debugging,
$error_reporting
and
trigger_error()
.