aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
blob: c3b9985d4dfe9b9ca3dd53349c072e61d56e7a28 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
assign()

assign variables/objects to the templates

Description
===========

void

assign

mixed

var

void

assign

string

varname

mixed

var

bool

nocache

You can explicitly pass name/value pairs, or associative arrays
containing the name/value pairs.

If you pass the optional third `nocache` parameter of TRUE, the variable
is assigned as nocache variable. See
[`Cacheability of Variables`](#cacheability.variables) for details.

> **Note**
>
> When you assign/register objects to templates, be sure that all
> properties and methods accessed from the template are for presentation
> purposes only. It is very easy to inject application logic through
> objects, and this leads to poor designs that are difficult to manage.
> See the Best Practices section of the Smarty website.


    <?php
    // passing name/value pairs
    $smarty->assign('Name', 'Fred');
    $smarty->assign('Address', $address);

    // passing an associative array
    $smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));

    // passing an array
    $myArray = array('no' => 10, 'label' => 'Peanuts');
    $smarty->assign('foo',$myArray);

    // passing a row from a database (eg adodb)
    $sql = 'select id, name, email from contacts where contact ='.$id;
    $smarty->assign('contact', $db->getRow($sql));
    ?>

These are accessed in the template with


    {* note the vars are case sensitive like php *}
    {$Name}
    {$Address}
    {$city}
    {$state}

    {$foo.no}, {$foo.label}
    {$contact.id}, {$contact.name},{$contact.email}

To access more complex array assignments see
[`{foreach}`](#language.function.foreach) and
[`{section}`](#language.function.section)

See also [`assignByRef()`](#api.assign.by.ref),
[`getTemplateVars()`](#api.get.template.vars),
[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
[`{assign}`](#language.function.assign)