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
Variable modifiers can be applied to
variables,
custom functions or strings.
To apply a modifier, specify the value followed by a |
(pipe) and the modifier name. A modifier may accept additional parameters
that affect its behavior. These parameters follow the modifer name and are
separated by a :
(colon). Also,
all php-functions can be used as modifiers implicitly
(more below) and modifiers can be
combined.
.
Example 5.1. Modifier examples
{* apply modifier to a variable *} {$title|upper} {* modifier with parameters *} {$title|truncate:40:'...'} {* apply modifier to a function parameter *} {html_table loop=$myvar|upper} {* with parameters *} {html_table loop=$myvar|truncate:40:'...'} {* apply modifier to literal string *} {'foobar'|upper} {* using date_format to format the current date *} {$smarty.now|date_format:"%Y/%m/%d"} {* apply modifier to a custom function *} {mailto|upper address='smarty@example.com'} {* using php's str_repeat *} {'='|str_repeat:80} {* php's count *} {$myArray|@count} {* php's shuffle on servers's ip *} {$smarty.server.SERVER_ADDR|shuffle} (* this will uppercase and truncate the whole array *} <select name="name_id"> {html_options output=$myArray|upper|truncate:20} </select>
If you apply a modifier to an array variable instead of a single value variable,
the modifier will be applied to every value in that array. If you really want
the modifier to work on an entire array as a value, you must prepend the
modifier name with a @
symbol.
{$articleTitle|@count}
- will print out the number of
elements in the $articleTitle
array using the php
count()
function as a modifier.
Modifiers are autoloaded from the $plugins_dir
or can be registered explicitly with the register_modifier()
function. The later is useful for sharing a function between
php scripts and smarty templates.
All php-functions can be used as modifiers implicitly, as demonstrated in the example above. However, using php-functions as modifiers has two little pitfalls:
First - sometimes the order of the function-parameters is
not the desirable one. Formatting $foo
with
{"%2.f"|sprintf:$foo}
actually
works, but asks for the more intuitive, like
{$foo|string_format:"%2.f"}
that is provided by
the Smarty distribution.
Secondly - if
$security
is enabled, all php-functions that
are to be used as modifiers have to be declared trusted in the
MODIFIER_FUNCS
element of the
$security_settings
array.
See also
register_modifier()
,
combining modifiers.
and
extending smarty with plugins
This is used to capitalize the first letter of all words in a variable.
This is similar to the PHP
ucwords()
function.
Parameter Position | Type | Required | Default | Description |
---|---|---|---|---|
1 | boolean | No | FALSE |
This determines whether or not words with digits will be uppercased |
Example 5.2. capitalize
<?php $smarty->assign('articleTitle', 'next x-men film, x3, delayed.'); ?>
Where the template is:
{$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true}
Will output:
next x-men film, x3, delayed. Next X-Men Film, x3, Delayed. Next X-Men Film, X3, Delayed.