Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo

Completely lost on Ajax forms


Go to End
Reply


3 Posts   2520 Views

Avatar
Shane Garelja

Community Member, 18 Posts

28 March 2008 at 1:25pm

Edited: 28/03/2008 1:28pm

I have not been able to figure out how to get a form to submit using Ajax. There is mention of using a FormResponse object here. But then there is no documentation for it.

I have this in my Page_Controller class (NB: Haven't even started on DataObject stuff yet - just want to see this submitting via ajax):

function ContactUsForm() {
      // Create fields			
      $fields = new FieldSet(
         new TextField('FirstName', 'Name', 'Name'),
         new EmailField('Email', 'Email', 'Email'),
         new TextField('Phone', 'Phone No.', 'Phone No.'),
         new CheckboxField('Brochure', 'Email me a brochure'),
         new CheckboxField('Call', 'Please call me'),
         new CheckboxField('Newsletter', 'Sign me up for e-newsletter')
      );
 
      // Create actions
      $actions = new FieldSet(
        new AjaxFormAction('doContactUsForm', 'Submit'),
	new ResetFormAction('doCloseContactUsForm', 'Close')
      ); 
      $reqdFields = new RequiredFields("Email", "FirstName"); 
      return new Form($this, 'ContactUsForm', $fields, $actions);//, $reqdFields);
   }
	 
   function doContactUsForm($data, $form) {	 
      // your form actions
      FormResponse::update_dom_id('ContactFormLiner', '<p>DONE</p>');
      FormResponse::status_message('Done', 'good');        
      // will automatically show the status-message if called by ajax, or redirect on a normal HTTP-request
      return FormResponse::respond();
    }

Avatar
Shane Garelja

Community Member, 18 Posts

31 March 2008 at 6:24pm

Is this just a matter of copying the PageCommentInterface.js example or is there an easier "built-in" method?

Avatar
Ingo

Forum Moderator, 801 Posts

1 April 2008 at 10:31am

AjaxFormAction is only used in specific cms interfaces, we're discussing deprecating it in a sapphire-framework-context, see http://open.silverstripe.com/ticket/2353

PageCommentInterface.js is a good start, you just need basic PrototypeJS functionality to achieve what you're trying to do: http://prototypejs.org/api/ajax/request

You can still use the FormResponse class, just make sure you evaluate the ajax-response rather than simply outputting it (we have a little wrapper called Ajax.Evaluator for this)