aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md')
-rw-r--r--vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md111
1 files changed, 111 insertions, 0 deletions
diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
new file mode 100644
index 000000000..671ad8bb8
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
@@ -0,0 +1,111 @@
+Variables {#language.syntax.variables}
+=========
+
+Template variables start with the \$dollar sign. They can contain
+numbers, letters and underscores, much like a [PHP
+variable](&url.php-manual;language.variables). You can reference arrays
+by index numerically or non-numerically. Also reference object
+properties and methods.
+
+[Config file variables](#language.config.variables) are an exception to
+the \$dollar syntax and are instead referenced with surrounding
+\#hashmarks\#, or via the
+[`$smarty.config`](#language.variables.smarty.config) variable.
+
+
+ {$foo} <-- displaying a simple variable (non array/object)
+ {$foo[4]} <-- display the 5th element of a zero-indexed array
+ {$foo.bar} <-- display the "bar" key value of an array, similar to PHP $foo['bar']
+ {$foo.$bar} <-- display variable key value of an array, similar to PHP $foo[$bar]
+ {$foo->bar} <-- display the object property "bar"
+ {$foo->bar()} <-- display the return value of object method "bar"
+ {#foo#} <-- display the config file variable "foo"
+ {$smarty.config.foo} <-- synonym for {#foo#}
+ {$foo[bar]} <-- syntax only valid in a section loop, see {section}
+ {assign var=foo value='baa'}{$foo} <-- displays "baa", see {assign}
+
+ Many other combinations are allowed
+
+ {$foo.bar.baz}
+ {$foo.$bar.$baz}
+ {$foo[4].baz}
+ {$foo[4].$baz}
+ {$foo.bar.baz[4]}
+ {$foo->bar($baz,2,$bar)} <-- passing parameters
+ {"foo"} <-- static values are allowed
+
+ {* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
+ {$smarty.server.SERVER_NAME}
+
+ Math and embedding tags:
+
+ {$x+$y} // will output the sum of x and y.
+ {assign var=foo value=$x+$y} // in attributes
+ {$foo[$x+3]} // as array index
+ {$foo={counter}+3} // tags within tags
+ {$foo="this is message {counter}"} // tags within double quoted strings
+
+ Defining Arrays:
+
+ {assign var=foo value=[1,2,3]}
+ {assign var=foo value=['y'=>'yellow','b'=>'blue']}
+ {assign var=foo value=[1,[9,8],3]} // can be nested
+
+ Short variable assignment:
+
+ {$foo=$bar+2}
+ {$foo = strlen($bar)} // function in assignment
+ {$foo = myfunct( ($x+$y)*3 )} // as function parameter
+ {$foo.bar=1} // assign to specific array element
+ {$foo.bar.baz=1}
+ {$foo[]=1} // appending to an array
+
+ Smarty "dot" syntax (note: embedded {} are used to address ambiguities):
+
+ {$foo.a.b.c} => $foo['a']['b']['c']
+ {$foo.a.$b.c} => $foo['a'][$b]['c'] // with variable index
+ {$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] // with expression as index
+ {$foo.a.{$b.c}} => $foo['a'][$b['c']] // with nested index
+
+ PHP-like syntax, alternative to "dot" syntax:
+
+ {$foo[1]} // normal access
+ {$foo['bar']}
+ {$foo['bar'][1]}
+ {$foo[$x+$x]} // index may contain any expression
+ {$foo[$bar[1]]} // nested index
+ {$foo[section_name]} // smarty {section} access, not array access!
+
+ Variable variables:
+
+ $foo // normal variable
+ $foo_{$bar} // variable name containing other variable
+ $foo_{$x+$y} // variable name containing expressions
+ $foo_{$bar}_buh_{$blar} // variable name with multiple segments
+ {$foo_{$x}} // will output the variable $foo_1 if $x has a value of 1.
+
+ Object chaining:
+
+ {$object->method1($x)->method2($y)}
+
+ Direct PHP function access:
+
+ {time()}
+
+
+
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
+
+Request variables such as `$_GET`, `$_SESSION`, etc are available via
+the reserved [`$smarty`](#language.variables.smarty) variable.
+
+See also [`$smarty`](#language.variables.smarty), [config
+variables](#language.config.variables)
+[`{assign}`](#language.function.assign) and [`assign()`](#api.assign).