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 -~----------~----~----~----~------~----~------~--~---