Variable Modifiers

Smarty Manual
Prev |  | Next

# Chapter 5. Variable Modifiers

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.

  > Example: `{$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

# capitalize

This is used to capitalize the first letter of all words in a variable. This is similar to the PHP `ucfirst()` 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.

See also `lower` and `upper`

Prev | Home | Next
{$smarty} reserved variable | Up | cat