[development] form_api: same form called multiple times, wrong form_state values

Greg Knaddison Greg at GrowingVentureSolutions.com
Sun Mar 14 22:46:28 UTC 2010


On Sat, Mar 13, 2010 at 6:53 AM, Hans Langouche
<hans.langouche at gmail.com> wrote:
> I have a small admin form (2 buttons and a hidden value) that is repeated
> multiple times (each time the value is different).
>
> Now whenever I access $form_state['values'] from the submit function, the
> hidden value always returns the data from the first form.  When I print out
> $_POST directly I do get the correct data.
>
> I've been searching this and it seems this is because the form_state is
> cached.  I couldn't find any workaround though, so for the moment working
> with $_POST.  Anyone know the correct way to do this ?

I ran into this a while ago myself. You have to do a little trickery
with the form_id value so that each form on the page has a unique ID.
If the forms are for users then maybe the UID will work. If they are
for node teasers maybe the node ID. Then you create a hook_forms value
that gets called and resets the callback to be a specific general
function.

See http://api.drupal.org/api/function/hook_forms and perhaps some of
the modules which use it like fivestar.module and
notifications_ui.module (I think that one does...one of the
notifications/messaging modules does).

Please ask if you need more advice - it's a tricky problem to resolve
that cost me more time than I'd like to admit.

Regards,
Greg

-- 
Greg Knaddison | 303-800-5623 | http://growingventuresolutions.com
Mastering Drupal - http://www.masteringdrupal.com


More information about the development mailing list