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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>1.5.3 Writing a form mask</title>
<META NAME="description" CONTENT="1.5.3 Writing a form mask">
<META NAME="keywords" CONTENT="lib">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="STYLESHEET" href="lib.css" type='text/css'>
<link rel="first" href="lib.html">
<link rel="contents" href="contents.html" title="Contents">
<LINK REL="next" HREF="node22.html">
<LINK REL="previous" HREF="node16.html">
<LINK REL="up" href="module-Form.html">
<LINK REL="next" HREF="node22.html">
<meta name='aesop' content='information'>
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node20.html"><img src="../icons/previous.gif"
border="0" height="32"
alt="Previous Page" width="32"></A></td>
<td><A href="module-Form.html"><img src="../icons/up.gif"
border="0" height="32"
alt="Up One Level" width="32"></A></td>
<td><A HREF="node22.html"><img src="../icons/next.gif"
border="0" height="32"
alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy Standard Library Reference</td>
<td><A href="contents.html"><img src="../icons/contents.gif"
border="0" height="32"
alt="Contents" width="32"></A></td>
<td><img src="../icons/blank.gif"
border="0" height="32"
alt="" width="32"></td>
<td><img src="../icons/blank.gif"
border="0" height="32"
alt="" width="32"></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" HREF="node20.html">1.5.2.4 Form</A>
<b class="navlabel">Up:</b> <a class="sectref" href="module-Form.html">1.5 Form </A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node22.html">1.5.4 Putting it together</A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION003530000000000000000">
1.5.3 Writing a form mask</A>
</H2>
The module comes with a default mask for forms, but you'll probably want to change it to use your own design.
All you have to do is write your own form mask.
<P>
A form mask takes a FormField instance as an input and returns some HTML code as output. Don't forget that your
mask should be setting the value of the field according the the <var>currentValue</var> member variable. Moreover,
it should handle the field differently if the <var>errorMessage</var> is set.
<P>
For instance, a mask for a text field could look like this:
<div class="verbatim"><pre>
if field.typ=='text':
result='%s: <input type=text name="%s" value="%s" size="%s">'%(
field.label, field.name, field.currentValue, field.size)
if field.errorMessage:
result+=' <font color=red>%s</font>'%field.errorMessage
return result+'<br>'
</pre></div>
<P>
Things are a bit trickier for select boxes, radio buttons or checkboxes because you have to loop over
the <var>optionList</var> member variable and match each value against <var>currentValue</var>.
<P>
For instance, for a select box, the mask could look like this:
<div class="verbatim"><pre>
if field.typ=='select':
result='%s: <select name="%s" size="%s">'%(field.label, field.name, field.size)
for optionValue in optionList:
if optionValue==field.currentValue: checked=' checked'
else: checked=''
result+='<option%s>%s</option>'%(checked,optionValue)
result+='</select>
if field.errorMessage:
result+=' <font color=red>%s</font>'%field.errorMessage
return result+'<br>'
</pre></div>
<P>
<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node20.html"><img src="../icons/previous.gif"
border="0" height="32"
alt="Previous Page" width="32"></A></td>
<td><A href="module-Form.html"><img src="../icons/up.gif"
border="0" height="32"
alt="Up One Level" width="32"></A></td>
<td><A HREF="node22.html"><img src="../icons/next.gif"
border="0" height="32"
alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy Standard Library Reference</td>
<td><A href="contents.html"><img src="../icons/contents.gif"
border="0" height="32"
alt="Contents" width="32"></A></td>
<td><img src="../icons/blank.gif"
border="0" height="32"
alt="" width="32"></td>
<td><img src="../icons/blank.gif"
border="0" height="32"
alt="" width="32"></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" HREF="node20.html">1.5.2.4 Form</A>
<b class="navlabel">Up:</b> <a class="sectref" href="module-Form.html">1.5 Form </A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node22.html">1.5.4 Putting it together</A>
<hr>
<span class="release-info">Release 0.10, documentation updated on 19 March 2004.</span>
</DIV>
<!--End of Navigation Panel-->
<ADDRESS>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</ADDRESS>
</BODY>
</HTML>
|