aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md')
-rw-r--r--vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md95
1 files changed, 48 insertions, 47 deletions
diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
index 647e4bfc8..cee6762c8 100644
--- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
+++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
@@ -1,5 +1,4 @@
-{function} {#language.function.function}
-==========
+# {function}
`{function}` is used to create functions within a template and call them
just like a plugin function. Instead of writing a plugin that generates
@@ -12,15 +11,22 @@ nested menus.
> 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
+> template. Otherwise, you can directly use the function as
> `{funcname ...}` in the template.
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|---------------------------------------------------------------|
+| name | Yes | The name of the template function |
+| \[var \...\] | No | default variable value to pass local to the template function |
+
- The `{function}` tag must have the `name` attribute which contains
- the the name of the template function. A tag with this name can be
+ the name of the template function. A tag with this name can be
used to call the template function.
- Default values for variables can be passed to the template function
- as [attributes](#language.syntax.attributes). Like in PHP function
+ as [attributes](../language-basic-syntax/language-syntax-attributes.md). Like in PHP function
declarations you can only use scalar values as default. The default
values can be overwritten when the template function is being
called.
@@ -30,12 +36,7 @@ nested menus.
inside the template function have local scope and are not visible
inside the calling template after the template function is executed.
-**Attributes:**
- Attribute Name Type Required Default Description
- ---------------- -------------- ---------- --------- ---------------------------------------------------------------
- name string Yes *n/a* The name of the template function
- \[var \...\] \[var type\] No *n/a* default variable value to pass local to the template function
> **Note**
>
@@ -45,44 +46,44 @@ nested menus.
> values must be scalar and can not be variable. Variables must be
> passed when the template is called.
-
- {* define the function *}
- {function name=menu level=0}
- {function menu level=0} {* short-hand *}
- <ul class="level{$level}">
- {foreach $data as $entry}
- {if is_array($entry)}
- <li>{$entry@key}</li>
- {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 *}
- {menu data=$menu}
-
-
+## Examples
+
+```smarty
+{* define the function *}
+{function name=menu level=0}
+{function menu level=0} {* short-hand *}
+ <ul class="level{$level}">
+ {foreach $data as $entry}
+ {if is_array($entry)}
+ <li>{$entry@key}</li>
+ {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 *}
+{menu data=$menu}
+```
Will generate the following output
-
- * item1
- * item2
- * item3
- o item3-1
- o item3-2
- o item3-3
- + item3-3-1
- + item3-3-2
- * item4
-
+```
+* item1
+* item2
+* item3
+ o item3-1
+ o item3-2
+ o item3-3
+ + item3-3-1
+ + item3-3-2
+* item4
+```
-
-See also [`{call}`](#language.function.call)
+See also [`{call}`](./language-function-call.md)