[html-formfu] Redirection after an error
Carl Franks
fireartist at gmail.com
Fri May 30 15:55:43 BST 2008
2008/5/29 <hallouina-formfu at yahoo.fr>:
> Hello,
>
> I have a web page splitted into 3 tabs. I have a form on the first tab. On the second tab I display a list of object from a table. I can add object in the second tab with FormFu and I redirect to this second tab after the validation (here : http://localhost:3000/person/view/1#tab2 ). It works fine.
Hi Antoine,
I'm guessing you're using a JS library to fake tabs within a single
page, but you don't explain whether the content for the tabs comes
from the original html file, or whether it loads a new url for each
tab.
> And I fill my form in the first tab. If my form isn't full fill, i get this message : "This field is required". But i'm redirect from the prefious url : the second tab. I suppose this is because the default FormFu behavior is to redirect to the previous url in case of error. To avoid this problem I add this line to my controller :
HTML-FormFu doesn't know anything about redirects - that's purely
dependant on your web-framework.
I'm guessing your form is using the same URL for it's "action"
attribute as is used to display the form - that would explain this
behaviour.
> if ($form->submitted && $form->has_errors) {
> $c->response->redirect($c->uri_for("/person/view/$id_person#tab1")); $c->detach;
> }
If you want to display errors, you can't do a redirect - as that makes
the client's browser make a new request to to the server, and the
previously submitted data is lost.
I normally just do this (with Catalyst):
sub foo {
my ( $self, $c ) = @_;
my $form = $self->stash->{form};
if ( $form->submitted_and_valid ) {
# no errors - do processing stuff
}
# if there are errors, it'll just fall through to here, and
redisplay the form
return;
}
Carl
More information about the HTML-FormFu
mailing list