Creating a Multi-Page Form¶
You can create a multi-page form as a chain of form folders.
Creating a multi-page form is probably much simpler than you might suppose. You may do it by just creating a sequence of form folders that each link to the next. The basic procedure is:
- Create your sequence of form folders, typically all in the same normal Plone folder;
- On all but the last form folder, turn off all action adapters and set the Custom Success Action override to "traverse_to:string:id-of-next-form-folder";
- On all but the last form folder, set the Submit Button Label to something like "Next" and turn off the cancel button.
- On all but the first form folder, set the Exclude From Navigation flag in the properties tab;
- In each form folder, create a set of hidden form fields matching all the fields in all the previous forms;
- In the last form, turn on your real action adapter(s).
As your user moves from form page to page, input will be automatically saved in the hidden fields of subsequent pages.
A Note on Hidden Fields: The hidden flag is not available for all form field types, but you don't need it. String, Text and Lines fields are adequate to carry all the basic data. Use a hidden Lines field to hold multiple selection field input, string or text for the rest.
An added bonus
If you want to create a sequence of forms, where the answers on form_A could lead to a form_B or form_C, you can use a traverse_to override.
- Create a selection field in form_A, which could be called 'formnext';
- As values in the selection field, put the paths to the next forms in the sequence;
- Then, in the form overrides -> custom success action use
use traverse_to as opposed to a redirect_to as this will preserve the form object in the request.