aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md')
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
new file mode 100644
index 000000000..786f0c10c
--- /dev/null
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
@@ -0,0 +1,76 @@
+{call} {#language.function.call}
+======
+
+`{call}` is used to call a template function defined by the
+[`{function}`](#language.function.function) tag just like a plugin
+function.
+
+> **Note**
+>
+> Template functions are defined global. Since the Smarty compiler is a
+> single-pass compiler, The [`{call}`](#language.function.call) tag must
+> be used to call a template function defined externally from the given
+> template. Otherwise you can directly use the function as
+> `{funcname ...}` in the template.
+
+- The `{call}` tag must have the `name` attribute which contains the
+ the name of the template function.
+
+- Values for variables can be passed to the template function as
+ [attributes](#language.syntax.attributes).
+
+**Attributes:**
+
+ Attribute Name Type Required Default Description
+ ---------------- -------------- ---------- --------- ------------------------------------------------------------------------------------------
+ name string Yes *n/a* The name of the template function
+ assign string No *n/a* The name of the variable that the output of called template function will be assigned to
+ \[var \...\] \[var type\] No *n/a* variable to pass local to template function
+
+**Option Flags:**
+
+ Name Description
+ --------- --------------------------------------------
+ nocache Call the template function in nocache mode
+
+
+ {* define the function *}
+ {function name=menu level=0}
+ <ul class="level{$level}">
+ {foreach $data as $entry}
+ {if is_array($entry)}
+ <li>{$entry@key}</li>
+ {call name=menu data=$entry level=$level+1}
+ {else}
+ <li>{$entry}</li>
+ {/if}
+ {/foreach}
+ </ul>
+ {/function}
+
+ {* create an array to demonstrate *}
+ {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
+ ['item3-3-1','item3-3-2']],'item4']}
+
+ {* run the array through the function *}
+ {call name=menu data=$menu}
+ {call menu data=$menu} {* short-hand *}
+
+
+
+Will generate the following output
+
+
+ * item1
+ * item2
+ * item3
+ o item3-1
+ o item3-2
+ o item3-3
+ + item3-3-1
+ + item3-3-2
+ * item4
+
+
+
+See also [`{function}`](#language.function.function)