I want to create a form for an entity which has a many attributes. To ensure the ease of data entry, I want to split that form in multiple pages (for example 2 or 3 pages). Let's take the ad entity example:
- In page 1, the user will enter the ad text
- In page 2, the user will enter his contact
- In page 3, the user will provide the (X,Y) position of the ad
This split will require saving the available data (inserting in the database) in the 1st page before moving to the next page. Unfortunately, This is not possible due to constraints.
The question is: Is any documentations or any examples that solve this issue?
If no documentation is available, do you think it is better to split my entity in n entities in order to have one entity per page?
Thanks for you help.
You don't have to split your entity, but your form : create 3 forms, each containing the property needed from the ad entity.
You'll need to :
In pseudo-code, your controller would look like this :
You probably should use CraueFormFlowBundle. It provides facilities for building multi-step forms.
You can create one form type for an entire flow, or one form type per step.
It's very easy to setup. Everything is explained here.
You could store all the submitted data in a session or temporary table, then persist it all together at the end. However, I do my best to avoid extra work like this.
I think it may well be that your form steps follow the order by which the constraints dictate.
Saying that, sometimes I think this kind of problem can be solved by making a better design or process decision. i.e. limit the number of questions or only ask the vital ones at first. Without knowing the ins and outs it's hard to know whether this can be done.