PHP Classes

File: htdocs/xoops_lib/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md

Recommend this page to a friend!
  Packages of Michael Beck   Xoops 2.5   htdocs/xoops_lib/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md   Download  
File: htdocs/xoops_lib/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
Role: Example script
Content type: text/markdown
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 2 months ago
Size: 4,391 bytes
 

Contents

Class file image Download

{assign}, {$var=...}

{assign} or {$var=...} is used for assigning template variables during the execution of a template.

Attributes of the {assign} syntax

| Attribute Name | Required | Description | |----------------|------------|-----------------------------------------------------------------------| | var | | The name of the variable being assigned | | value | | The value being assigned | | scope | (optional) | The scope of the assigned variable: \'parent\',\'root\' or \'global\' |

Attributes of the {$var=...} syntax

| Attribute Name | Required | Description | |----------------|------------|-----------------------------------------------------------------------| | scope | (optional) | The scope of the assigned variable: \'parent\',\'root\' or \'global\' |

Option Flags

| Name | Description | |---------|---------------------------------------------------| | nocache | Assigns the variable with the 'nocache' attribute |

> Note > > Assignment of variables in-template is essentially placing application > logic into the presentation that may be better handled in PHP. Use at > your own discretion.

Examples

{assign var="name" value="Bob"}  {or}
{assign "name" "Bob"} {short-hand, or}
{$name='Bob'}

The value of $name is {$name}.
  

The above example will output:

The value of $name is Bob.

{assign var="name" value="Bob" nocache}  {or}
{assign "name" "Bob" nocache} {short-hand, or}
{$name='Bob' nocache}

The value of $name is {$name}.

The above example will output:

The value of $name is Bob.
  

{assign var=running_total value=$running_total+$some_array[$row].some_value}  {or}
{$running_total=$running_total+$some_array[row].some_value}

Variables assigned in the included template will be seen in the including template.

{include file="sub_template.tpl"}

{display variable assigned in sub_template}
{$foo}<br>

The template above includes the example sub_template.tpl below:


{foo will be known also in the including template}
{assign var="foo" value="something" scope=parent}
{$foo="something" scope=parent}

{bar is assigned only local in the including template}
{assign var="bar" value="value"} {or}
{$var="value"}

You can assign a variable to root of the current root tree. The variable is seen by all templates using the same root tree.

{assign var=foo value="bar" scope="root"}
  

A global variable is seen by all templates.

{assign var=foo value="bar" scope="global"} {or}
{assign "foo" "bar" scope="global"} {short-hand, or}
{$foo="bar" scope="global"}

To access {assign} variables from a php script use getTemplateVars(). Here's the template that creates the variable $foo.

{assign var="foo" value="Smarty"} {or}
{$foo="Smarty"}

The template variables are only available after/during template execution as in the following script.

<?php

// this will output nothing as the template has not been executed
echo $smarty->getTemplateVars('foo');

// fetch the template to a variable
$whole_page = $smarty->fetch('index.tpl');

// this will output 'smarty' as the template has been executed
echo $smarty->getTemplateVars('foo');

$smarty->assign('foo','Even smarter');

// this will output 'Even smarter'
echo $smarty->getTemplateVars('foo');

The following functions can also optionally assign template variables: {capture}, {include}, {insert}, {counter}, {cycle}, {eval}, {fetch}, {math} and {textformat}.

See also {append}, assign() and getTemplateVars().