[support] Changing checkboxes options during hook_node_validate

Metzler, David metzlerd at evergreen.edu
Wed Feb 11 16:58:30 UTC 2015


Actually you should be able to alter the form in the validation function yes?  Just change the function signature to pass $form by reference and make the changes to the form that you need rather than going through the later hook?

Dave

From: support-bounces at drupal.org [mailto:support-bounces at drupal.org] On Behalf Of Jeff Greenberg
Sent: Wednesday, February 11, 2015 8:45 AM
To: support at drupal.org
Subject: Re: [support] Changing checkboxes options during hook_node_validate

Ok, I've tried that. The last thing I do in hook_node_validate is $form_state['rebuild'] = true; What I notice is that hook_form_node_form_alter does not fire between then and the form being redisplayed, so my pulling the options from $form_state['storage'] never happens.

On Wed, Feb 11, 2015 at 10:57 AM, Jamie Holly <hovercrafter at earthlink.net<mailto:hovercrafter at earthlink.net>> wrote:
The checkboxes have to be added in the form creation stage, so in either hook_form or hook_form_alter. Then in the hook_validate, set a variable on $form_state['storage'] and set $form_state['rebuild'] = TRUE; and check in your hook_form or hook_form_alter for your $form_state['storage'] setting, and if set then add your checkboxes.

I suggest looking at the form_example_wizard in the examples module, as that's basically what you are after, even though it's not a typical multi-step wizard you are after, the logic is still the same.


Jamie Holly

http://hollyit.net
On 2/11/2015 10:43 AM, Jeff Greenberg wrote:
One thing that is either part of the issue, or a separate issue that impacts this, is that the checkboxes field is added via hook_form_alter. I notice that although the field appears in $form_state[values] it does not appear in $form_state[field], so I'm wondering where $form_state gets the information for the field when rebuilding the form.

On Wed, Feb 11, 2015 at 9:31 AM, Jeff Greenberg <listmail.ayendesigns at gmail.com<mailto:listmail.ayendesigns at gmail.com>> wrote:

I have a node form that contains a checkboxes field with options NULL at the time the form is displayed.

During node_validate, if certain criteria is met, an array of options (checkboxes) is created, and the form needs to be redisplayed with the checkboxes as part of it.

I've tried setting #options = the new array in the $form, in $form_state[original_form], etc all to no avail. The field doesn't change.

I also set one checkbox in the field at the start, so that I could find it in the $form and $form_state structures, changed where I found it to the new options array, and again, no change. I am setting $form_state[rebuild] to true, and even tried explicitly calling for the form to be rebuilt.


--
---
drupal.org/user/367108<http://drupal.org/user/367108>
linkedin.com/in/jeffrgreenberg<http://linkedin.com/in/jeffrgreenberg>
accidentalcoder.com<http://accidentalcoder.com> / ayendesigns.com<http://ayendesigns.com>
@accidentalcoder



--
---
drupal.org/user/367108<http://drupal.org/user/367108>
linkedin.com/in/jeffrgreenberg<http://linkedin.com/in/jeffrgreenberg>
accidentalcoder.com<http://accidentalcoder.com> / ayendesigns.com<http://ayendesigns.com>
@accidentalcoder



--
[ Drupal support list | http://lists.drupal.org/ ]



--
---
drupal.org/user/367108<http://drupal.org/user/367108>
linkedin.com/in/jeffrgreenberg<http://linkedin.com/in/jeffrgreenberg>
accidentalcoder.com<http://accidentalcoder.com> / ayendesigns.com<http://ayendesigns.com>
@accidentalcoder
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20150211/5e32fd1c/attachment-0001.html 


More information about the support mailing list