Smarty Manual
Prev | Chapter 3. Basic Syntax | Next

# Variables

Template variables start with the $dollar sign. They can contain numbers, letters and underscores, much like a PHP variable. You can reference arrays by index numerically or non-numerically. Also reference object properties and methods.

Config file variables are an exception to the $dollar syntax and are instead referenced with surrounding #hashmarks#, or via the `$smarty.config` variable.

Example 3-2. Variables
    {$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}

Request variables such as `$_GET`, `$_SESSION`, etc are available via the reserved `$smarty` variable.

See also `$smarty`, config variables `{assign}` and `assign()`.

Prev | Home | Next
Basic Syntax | Up | Functions