diff options
Diffstat (limited to 'vendor/smarty/smarty/docs/designers/language-modifiers.md')
-rw-r--r-- | vendor/smarty/smarty/docs/designers/language-modifiers.md | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/vendor/smarty/smarty/docs/designers/language-modifiers.md b/vendor/smarty/smarty/docs/designers/language-modifiers.md new file mode 100644 index 000000000..4cb69cd1e --- /dev/null +++ b/vendor/smarty/smarty/docs/designers/language-modifiers.md @@ -0,0 +1,123 @@ +Variable Modifiers {#language.modifiers} +================== + +## Table of contents +- [capitalize](./language-modifiers/language-modifier-capitalize.md) +- [cat](./language-modifiers/language-modifier-cat.md) +- [count_characters](./language-modifiers/language-modifier-count-characters.md) +- [count_paragraphs](./language-modifiers/language-modifier-count-paragraphs.md) +- [count_sentences](./language-modifiers/language-modifier-count-sentences.md) +- [count_words](./language-modifiers/language-modifier-count-words.md) +- [date_format](./language-modifiers/language-modifier-date-format.md) +- [default](./language-modifiers/language-modifier-default.md) +- [escape](./language-modifiers/language-modifier-escape.md) +- [from_charset](./language-modifiers/language-modifier-from-charset.md) +- [indent](./language-modifiers/language-modifier-indent.md) +- [lower](./language-modifiers/language-modifier-lower.md) +- [nl2br](./language-modifiers/language-modifier-nl2br.md) +- [regex_replace](./language-modifiers/language-modifier-regex-replace.md) +- [replace](./language-modifiers/language-modifier-replace.md) +- [spacify](./language-modifiers/language-modifier-spacify.md) +- [string_format](./language-modifiers/language-modifier-string-format.md) +- [strip](./language-modifiers/language-modifier-strip.md) +- [strip_tags](./language-modifiers/language-modifier-strip-tags.md) +- [to_charset](./language-modifiers/language-modifier-to-charset.md) +- [truncate](./language-modifiers/language-modifier-truncate.md) +- [unescape](./language-modifiers/language-modifier-unescape.md) +- [upper](./language-modifiers/language-modifier-upper.md) +- [wordwrap](./language-modifiers/language-modifier-wordwrap.md) + +Variable modifiers can be applied to +[variables](./language-variables.md), [custom +functions](./language-custom-functions.md) 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 modifier name and are separated by a `:` +(colon). Also, *all php-functions can be used as modifiers implicitly* +(more below) and modifiers can be +[combined](./language-combining-modifiers.md). + + + {* 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} + + {* this will uppercase and truncate the whole array *} + <select name="name_id"> + {html_options output=$my_array|upper|truncate:20} + </select> + + + +- Modifiers can be applied to any type of variables, including arrays + and objects. + + > **Note** + > + > The default behavior was changed with Smarty 3. In Smarty 2.x, you + > had to use an \"`@`\" symbol to apply a modifier to an array, such + > as `{$articleTitle|@count}`. With Smarty 3, the \"`@`\" is no + > longer necessary, and is ignored. + > + > If you want a modifier to apply to each individual item of an + > array, you will either need to loop the array in the template, or + > provide for this functionality inside your modifier function. + + > **Note** + > + > Second, in Smarty 2.x, modifiers were applied to the result of + > math expressions like `{8+2}`, meaning that + > `{8+2|count_characters}` would give `2`, as 8+2=10 and 10 is two + > characters long. With Smarty 3, modifiers are applied to the + > variables or atomic expressions before executing the calculations, + > so since 2 is one character long, `{8+2|count_characters}` + > gives 9. To get the old result use parentheses like + > `{(8+2)|count_characters}`. + +- Modifiers are autoloaded from the + [`$plugins_dir`](../programmers/api-variables/variable-plugins-dir.md) or can be registered + explicitly with the [`registerPlugin()`](../programmers/api-functions/api-register-plugin.md) + 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 + `$modifiers` property of the securty policy. See the + [Security](../programmers/advanced-features/advanced-features-security.md) section for details. + +See also [`registerPlugin()`](../programmers/api-functions/api-register-plugin.md), [combining +modifiers](./language-combining-modifiers.md). and [extending smarty with +plugins](../programmers/plugins.md) |