{$form.javascript} {$form.hidden} {foreach item=sec key=i from=$form.sections} {foreach item=element from=$sec.elements} {if $element.style} {include file="smarty-dynamic-`$element.style`.tpl} {* NOTE: Another way ist to have smarty template code in $element.style. In this case you can do: {if $element.style} {eval var=$element.style} *} {elseif $element.type eq "submit" or $element.type eq "reset"} {if not $form.frozen} {/if} {else} {if $element.type eq "textarea"} {/if} {/foreach} {/foreach} {if $form.requirednote and not $form.frozen} {/if}
{$sec.header}
  {$element.html}
{if $element.required}*{/if}{$element.label}
{else}
{if $element.required}*{/if}{$element.label}: {/if} {if $element.error}{$element.error}
{/if} {if $element.type eq "group"} {foreach key=gkey item=gitem from=$element.elements} {$gitem.label} {$gitem.html}{if $gitem.required}*{/if} {if $element.separator}{cycle values=$element.separator}{/if} {/foreach} {else} {$element.html} {/if}
{$element.label_note}
  {$form.requirednote}
 

Collected Errors:
{foreach key=name item=error from=$form.errors} {$error} in element [{$name}]
{/foreach}

 

Best Practice:
Use only one dynamic form template like this for your
Smarty driven project. You include this where
to place a form with the formdata-Array rendered by
SmartyDynamic QuickForm Renderer as option:

{ldelim}include file=form-dynamic.tpl form=$formdata{rdelim}
 

The used "Dynamic" Array

{$dynamic_array|htmlentities}