Le mardi 10 août 2010 à 22:12 -0400, Jeff Greenberg a écrit : > > So, two questions. Is form_state going to persist the user data for me > between form loads, or is there a better method? And I've run into an > interesting problem in that the portion of the form with required fields > (name, etc) doesn't need to be filled in until the user wants to submit, > but of course, that ends up throwing an error when the form is > 'submitted' due to one of the other buttons being clicked. Is there a > way to have those buttons cause a submit, but bypass validation?
In order to bypass validation, may be you can remove the required attribute of your form fields, and check for them not be empty in a custom validation handler. You can safely use the form_state array to store your temporary data, but remember that the form cache has only 6 hours to live. I'd create a custom cache table (using the system module table schema definition, with another name), then use it to store my data using each step form submit or validation handler without setting any lifetime. If you create such cache table, it won't be erased by the cron unless you implement the hook_flush_caches() in order to do it. Cache tables are meant to store temporary data which you are be able to rebuild, and can be safely dropped. So, if the data is temporary user input, you can create a cache table and use it with custom queries (not using cache_get() and cache_set()) if you really meant to store this into database, this will allow you to bypass mecanisms such a memcache storage and ensure your data won't be lost. Pierre.
