The PHP reserved {$smarty}
variable can be used to access several
environment and request variables. The full list of them follows.
The request variables such as
$_GET
, $_POST
, $_COOKIE
, $_SERVER
, $_ENV
and $_SESSION
can
be accessed as demonstrated in the examples below:
{* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *}
{$smarty.get.page}
{* display the variable "page" from a form ($_POST['page']) *}
{$smarty.post.page}
{* display the value of the cookie "username" ($_COOKIE['username']) *}
{$smarty.cookies.username}
{* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
{* display the system environment variable "PATH" *}
{$smarty.env.PATH}
{* display the php session variable "id" ($_SESSION['id']) *}
{$smarty.session.id}
{* display the variable "username" from merged get/post/cookies/server/env *}
{$smarty.request.username}
Note
For historical reasons
{$SCRIPT_NAME}
is shorthand for{$smarty.server.SCRIPT_NAME}
.<a href="{$SCRIPT_NAME}?page=smarty">click me</a> <a href="{$smarty.server.SCRIPT_NAME}?page=smarty">click me</a>
Note
Although Smarty provides direct access to PHP super globals for convenience, it should be used with caution. Directly accessing super globals mixes underlying application code structure with templates. A good practice is to assign specific needed values to template vars.
The current timestamp can be accessed
with {$smarty.now}
. The value reflects the number of seconds passed
since the so-called Epoch on January 1, 1970, and can be passed directly
to the date_format
modifier for
display. Note that time()
is called
on each invocation; eg a script that takes three seconds to execute with
a call to $smarty.now
at start and end will show the three-second
difference.
{* use the date_format modifier to show current date and time *}
{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
You can access PHP constant values directly.
<?php
// the constant defined in php
define('MY_CONST_VAL','CHERRIES');
Output the constant in a template with
{$smarty.const.MY_CONST_VAL}
Note
Although Smarty provides direct access to PHP constants for convenience, it is typically avoided as this is mixing underlying application code structure into the templates. A good practice is to assign specific needed values to template vars.
Template output captured via the built-in
{capture}..{/capture}
function can be
accessed using the {$smarty.capture}
variable. See the
{capture}
page for more information.
{$smarty.config}
variable can be used to refer to loaded config
variables. {$smarty.config.foo}
is a
synonym for {#foo#}
. See the
{config_load} page for more info.
The {$smarty.section}
variables can be used to refer to
{section}
loop properties. These have
some very useful values such as .first
, .index
, etc.
Note
The
{$smarty.foreach}
variable is no longer used with the new{foreach}
syntax, but is still supported with Smarty 2.x style foreach syntax.
Returns the name of the current template being processed (without the directory).
Returns the template object of the current template being processed.
Returns the name of the directory for the current template being processed if it is loaded from the filesystem (the default).
Returns the version of Smarty the template was compiled with.
<div id="footer">Powered by Smarty {$smarty.version}</div>
Returns block text from child template. See Template inheritance.
Returns block text from parent template. See Template inheritance
These variables are used for printing the left-delimiter and
right-delimiter value literally, the same as
{ldelim},{rdelim}
.
See also assigned variables and config variables