DownloadEmbedding Vars in Double Quotes
-
Smarty will recognize assigned
variables embedded in "double
quotes" so long as the variable name contains only numbers, letters
and under_scores. See naming
for more detail.
-
With any other characters, for example a period(.) or
`$object->reference`, then the variable must be surrounded by `` `backticks` ``.
-
In addition, Smarty does allow embedded Smarty tags in double-quoted
strings. This is useful if you want to include variables with
modifiers, plugin or PHP function results.
Examples
{func var="test $foo test"} // sees $foo
{func var="test $foo_bar test"} // sees $foo_bar
{func var="test `$foo[0]` test"} // sees $foo[0]
{func var="test `$foo[bar]` test"} // sees $foo[bar]
{func var="test $foo.bar test"} // sees $foo (not $foo.bar)
{func var="test `$foo.bar` test"} // sees $foo.bar
{func var="test `$foo.bar` test"|escape} // modifiers outside quotes!
{func var="test {$foo|escape} test"} // modifiers inside quotes!
{func var="test {time()} test"} // PHP function result
{func var="test {counter} test"} // plugin result
{func var="variable foo is {if !$foo}not {/if} defined"} // Smarty block function
{will replace $tpl_name with value}
{include file="subdir/$tpl_name.tpl"}
{does NOT replace $tpl_name}
{include file='subdir/$tpl_name.tpl'} // vars require double quotes!
{must have backticks as it contains a dot "."}
{cycle values="one,two,`$smarty.config.myval`"}
{must have backticks as it contains a dot "."}
{include file="`$module.contact`.tpl"}
{can use variable with dot syntax}
{include file="`$module.$view`.tpl"}
> 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.
See also escape.
|