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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

All other Modules /

Discuss all other Modules here.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

userforms - add query variable to redirect on error


Go to End


5 Posts   1506 Views

Avatar
bennettpr

Community Member, 37 Posts

8 February 2011 at 9:51am

Hi all,

Bit of an edge-case request this one, but here goes...

I'm using userforms for a project (client will need to add forms later on).

Some of the forms are opening in a fancybox JS popup. (http://fancybox.net/)

When validation fails, the behaviour of userforms / forms is to redirect back to the referring page and re-display the form with the requisite error messages. In this case the user is redirected back to the page they opened the form on, but the form isn't shown (as it was opened using fancybox)

I'm wanting to alter / override the default behaviour to add a query string variable to the redirect which I can use to identify the form which needs to be re-displayed.

I've examined UserDefinedForm.php and Form.php but can't see where the redirect occurs - can anyone offer any pointers?

Thanks,
Paul

Avatar
Willr

Forum Moderator, 5523 Posts

8 February 2011 at 8:39pm

UserDefinedForm.php -> process()

https://github.com/silverstripe/silverstripe-userforms/blob/master/code/UserDefinedForm.php#L758

One of the features I'm looking at building is a hook system for overriding this process() function easier but at the moment you'll have to either edit the file or subclass the form.

Avatar
bennettpr

Community Member, 37 Posts

9 February 2011 at 9:23am

Hi Will,

Thanks for your response.
I looked at process() but assumed that this was called *after* validation had occurred as it deals with saving the submission, emailing etc? Is process() where I'd alter the referer if validation had failed? It's not immediately clear if validation is performed in UserDefinedForm or passed to the Form class....

Thanks again for any help / pointers.

Regards,
Paul

Avatar
Willr

Forum Moderator, 5523 Posts

9 February 2011 at 9:50am

Sorry I missed the part where you were talking about validation.

Validation should be done automatically using jQuery Validate so it shouldn't submit the form at all. Might want to check to see this isn't causing a javascript error on your page.

Apart from that it uses the standard Form RequiredFields object to handle validation so you would need to alter those.

Avatar
bennettpr

Community Member, 37 Posts

9 February 2011 at 10:06am

Thanks Will,

I'm not using client side validation in this particular instance. I'll check out the RequiredFields object. I'm assuming I'll be able to use
Object::useCustomClass() to avoid hacking the SS core....

Regards,
Paul