[support] Changing checkboxes options during hook_node_validate

Jamie Holly hovercrafter at earthlink.net
Wed Feb 11 19:25:12 UTC 2015


Actually you never really know what is going to happen in validation. So 
many modules can do funky things. A lot of times the multi-step type 
forms handle the rebuild through a submit callback.

There's another option here as well, depending upon the criteria that 
has to be met, and that is using the #states system. You can see an 
example here:

http://cgit.drupalcode.org/examples/tree/form_example/form_example_states.inc

Jamie Holly
http://hollyit.net

On 2/11/2015 11:58 AM, Metzler, David wrote:
>
> 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/47bf6c3f/attachment.html 


More information about the support mailing list