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.