aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
blob: 067b93826a8a8abbc891d07e36dafd7015674485 (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
85
86
87
88
89
90
91
92
93
94
Template Functions {#plugins.functions}
==================

void

smarty\_function\_

name

array

\$params

object

\$template

All [attributes](#language.syntax.attributes) passed to template
functions from the template are contained in the `$params` as an
associative array.

The output (return value) of the function will be substituted in place
of the function tag in the template, eg the
[`{fetch}`](#language.function.fetch) function. Alternatively, the
function can simply perform some other task without any output, eg the
[`{assign}`](#language.function.assign) function.

If the function needs to assign some variables to the template or use
some other Smarty-provided functionality, it can use the supplied
`$template` object to do so eg `$template->foo()`.


    <?php
    /*
     * Smarty plugin
     * -------------------------------------------------------------
     * File:     function.eightball.php
     * Type:     function
     * Name:     eightball
     * Purpose:  outputs a random magic answer
     * -------------------------------------------------------------
     */
    function smarty_function_eightball($params, Smarty_Internal_Template $template)
    {
        $answers = array('Yes',
                         'No',
                         'No way',
                         'Outlook not so good',
                         'Ask again soon',
                         'Maybe in your reality');

        $result = array_rand($answers);
        return $answers[$result];
    }
    ?>

which can be used in the template as:

    Question: Will we ever have time travel?
    Answer: {eightball}.
        


    <?php
    /*
     * Smarty plugin
     * -------------------------------------------------------------
     * File:     function.assign.php
     * Type:     function
     * Name:     assign
     * Purpose:  assign a value to a template variable
     * -------------------------------------------------------------
     */
    function smarty_function_assign($params, Smarty_Internal_Template $template)
    {
        if (empty($params['var'])) {
            trigger_error("assign: missing 'var' parameter");
            return;
        }

        if (!in_array('value', array_keys($params))) {
            trigger_error("assign: missing 'value' parameter");
            return;
        }

        $template->assign($params['var'], $params['value']);     
        
    }
    ?>

          

See also: [`registerPlugin()`](#api.register.plugin),
[`unregisterPlugin()`](#api.unregister.plugin).