Hey Dustin,

What version are you using? I have some code for 1.2 custom validation
which I don't mind sharing with you, but would be rather pointless if
you are using 1.1 :)

I went through your exact process a few weeks ago, and have managed to
get it all working in 1.2.

Graham

On May 21, 7:49 pm, Dustin Weber <[EMAIL PROTECTED]> wrote:
> I'm trying to figure out the "proper" way to create and submit an ajax
> form, validate the data, and return a success or error messages to the
> original div.
>
> Simply stated:
> 1) User submits ajax form
> 2) Submitted data is validated (against the model)
> 3) Error Messages/Success Message are generated and original contact
> form is overwritten with these messages
> 4) Data is saved/sent (if validated properly)
>
> As an example, I have a short & simple contact form below that should
> help clarify what I'm trying to do.
>
> [Code Snippet From The View]
> -------------------------------------------------------------------
> <div id="shortContact">
>         <form onSubmit="return false;">
>                 <p>
>                         <label>Your Name: </label>
>                         <?php echo $html->input('shortContact/name', 
> array('size' =>
> '30')); ?>
>                         <?php echo $html->tagErrorMsg('shortContact/name', 'A 
> name is
> required.'); ?>
>                 </p>
>                 <p>
>                         <label>Your Email: </label>
>                         <?php echo $html->input('shortContact/email', 
> array('size' =>
> '30')); ?>
>                         <?php echo $html->tagErrorMsg('shortContact/email', 
> 'An email
> address is required.'); ?>
>                 </p>
>                 <?php echo $html->hidden('shortContact/phone'); ?>
>                 <p>
>                         <?php echo $ajax->submit('Get In Touch', array('url' 
> =>
> 'shortContact', 'update'=>'shortContact')); ?>
>                 </p>
>         </form>
> </div>
> -------------------------------------------------------------------
>
> [Code Snippet From The Controller]
> -------------------------------------------------------------------
> function shortContact ()
> {
>         //make sure data was submitted
>         if (!empty($this->data))
>         {
>                 //the phone field is a hidden field 'spam checker'
>                 //it should always be empty unless being spammed???
>                 if (empty($this->data['shortContact']['phone'])) {
>                          if($this->ShortContact->validates($this->data)) {
>                                 $this->sendEmail($this->data['shortContact']);
>                                 $this->render('success_contact');
>                          } else {
>                                  $this->render('error_contact');
>                          }
>                 }
>         }}
>
> -------------------------------------------------------------------
>
> [ShortContact Model Snippet]
> -------------------------------------------------------------------
> class ShortContact extends AppModel
> {
>     var $name = 'ShortContact';
>     var $useTable = false;
>
>     var $validate = array(
>         'name'  => VALID_NOT_EMPTY,
>         'email'   => VALID_EMAIL);}
>
> -------------------------------------------------------------------
>
> So, here's my issues:
>
> 1) If I have properly implemented the ajax->submit() method, then
> perhaps someone can enlighten me how to get validation working.
> Currently, I the data gets to the controller perfectly, but the
> validation doesn't work (eg: validation always passes - no errors ever
> returned).
>
> 2) How do I get the 'errors' back to the original view to update the
> tagErrorMsg with the error.  The render statements seem to be the key
> here.  In simple terms: rendering a success message and overwriting
> the 'shortContact' div is no problem at all.  However, if there's an
> error in the form and I render the "error_contact" to overwrite the
> 'shortContact' div, the errors pass through to the original view.  The
> issue seems to revolve around how the Model handles error message.
>
> 3) I can't seem to figure out how to properly use the $ajax->form()
> methods.  This was my original preferable method, but I ran into a lot
> of snags.  I see the usage in the API, but I'm a tad confused on how
> to implement it with the form.  Do I use a regular submit button?  Do
> I need a button with: onclick="this.form.submit();" or something else
> to actually submit the form?  Any help in that area would be vastly
> appreciated.  (Documentation is sparse on this topic)
>
> 4) Does anyone think my 'spam checking method' will work?  I assumed
> that any field named "phone" in a contact form would be filled out by
> a spam-bot.  A normal user would never see this hidden field, so it
> should work ok.  I guess I need a way to test spammers, heh.  Any
> comments on this method would be appreciated.
>
> Thanks for your help in advance!
> Dustin


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to