[Zope] Validating Form Data

Trevor Toenjes zope@toenjes.com
Tue, 5 Mar 2002 11:49:33 -0500


Zope doesn't do client-side validation like Javascript.

I you want server side validation, try Formulator.  )
It has built in handling of validation and error handling.
And join the Formulator mailing-list.

Or follow this pseudo-schema that has the form post to itself, and you do
all your data handling with data in REQUEST.

<dtml-if expr="REQUEST.REQUEST_METHOD=='POST'">
<dtml-try>
  <dtml-call "yourValidationscript(REQUEST)">
  <dtml-except>
    ## yourValidationscript returns errors
    <dtml-var yourerrorhandlingscript>
    ## displays the errors and repost the form
    <dtml-var yourHTMLform>

  <dtml-else>
     ## everything passed validation in yourValidationscript
     <dtml-var dosomethingwithData>

</dtml-try>

<dtml-else>
  ## Nothing has been 'POSTed',
  ## this is your first time through, so just present the HTML form
  <dtml-var yourHTMLform>

</dtml-if>

Cheers,
-Trevor

> -----Original Message-----
> From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of Mike
> Tran
> Sent: Tuesday, March 05, 2002 11:19 AM
> To: zope@zope.org
> Cc: lazug@lazug.org
> Subject: [Zope] Validating Form Data
>
>
> I am using the Javascript below to validate data on my form.  The
> part where
> it validate form data works fine.  My problem is when I call on
> the method
> "insertResume", my form variables does not get passed.
> For example, on the form i have a textbox field called "age".  I
> reference
> this in the "insertResume" method with <dtml-var age>, but the
> age variable
> does not get passed from the form to the "insertResume" method.
>
> Does anyone have any idea on how to fix this or maybe show me how
> to validate
> form data in Zope?  I've tried <dtml-unless> but the user have to go to
> another page and go back to the form itself to correct the data. With
> Javascript the user can stay on the same page.
>
> Thanks,
>
> <SCRIPT LANGUAGE="JavaScript">
> <!--
> function valid(form) {
>   var field = form.age;
>   var userAge = parseInt(field.value);
>   if (!userAge) {
>     alert("You must indicate your age.");
>     return false;
>   } else if (userAge >= 18) {
>       alert("Thank your for your resume.");
>       return true;
>     } else {
>         alert("You are only " + userAge + ". Try again when you
> are 18.");
>         field.focus();
>         field.select();
>         return false;
>       }
> }
> // -->
> </SCRIPT>
>
> <FORM METHOD="POST" ACTION="insertResume" onSubmit="return valid(this)">
>
> Your age:<BR><INPUT TYPE="text" NAME="age" SIZE="2"><BR>
> Desired Job:<BR><INPUT TYPE="text" NAME="job" SIZE="40"><BR>
> Resume:<BR><TEXTAREA NAME="resume" COLS="40" ROWS="5"></TEXTAREA><BR>
> <INPUT TYPE="submit" VALUE="Send Resume">
> </FORM>
>
> --
> Mike
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )