Re: HTML_QuickForm and Smarty Template
| From: | Thomas Schulz | Date: | Mon, 10 Nov 2003 19:42:43 +0000 |
| Subject: | Re: HTML_QuickForm and Smarty Template | ||
| References: | 1 2 3 4 5 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-8853@lists.php.net to get a copy of this message | ||
Matthias H. Risse wrote in php.pear.general:
> ok. i can understand your point of view, but cannot really
> agree to it :)
There where many points. Which one? ;-)
> the callback renderer sounds interesting. do you think of
> a templating system such as java server faces or asp.net try
> to establish?
I haven't a clue of java nor asp but the idea is to use the callback
funktionallity available in some engines. For Smarty i would combine
block- and template-functions. The Sample Template looks like:
{quickform name=form}
<table class="maintable" width="600" align="center">
{qf_group name="name"}
<tr>
<td class="label">Name: {qf_required group="name"}</td>
<td class="element">
{qf_error group="name" rule="required"}Name is required{/qf_error}
<table cellspacing="0" cellpadding="1">
<tr>
<td>{qf_element name=first type=text size=10}</td>
<td>{qf_element name=last type=text size=10}</td>
</tr>
<tr>
<td><font size="1"
color="grey">First</font></td>
<td><font size="1"
color="grey">Last</font></td>
</tr>
</table>
</td>
</tr>
{/qf_group}
<tr>
<td class="label">Company:</td>
<td class="element">
{qf_element name=company type=text size=20}
</td>
</tr>
{qf_group name="adress"}
<tr>
<td class="label">Zip, city:</td>
<td class="element">
{qf_error element="zip" rule=required}
Zip code is required
{/qf_error}
{qf_error element="zip" rule=numeric}
Zip code is numeric only
{/qf_error}
{qf_error element="city" rule=required}
City is required
{/qf_error}
{qf_error element="city" rule=lettersonly}
City is letters only
{/qf_error}
<table cellspacing="0" cellpadding="1">
<tr>
<td>{qf_element name=zip type=text size=6 maxlength=10}</td>
<td>{qf_element name=city type=text size=15}</td>
</tr>
<tr>
<td><font size="1"
color="grey">Zip</font></td>
<td><font size="1"
color="grey">City</font></td>
</tr>
</table>
</td>
</tr>
{/qf_group}
</table>
{/quickform}
Then you:
// extract the form definition from template
$renderer->prepare($form, 'smarty-callback.tpl');
// maybe add some hidden elements
$form->addElement('hidden', 'ihidTest', 'hiddenField');
// or freeze an element
$form->freeze('company');
// validate and render the form
if ($form->validate()) {
// Form is validated, then freezes the data
$form->freeze();
}
$form->accept($renderer);
Any Ideas out there?
ThS.
--
http://4bconsult.de