<div dir="ltr">Ok, did that , and the #validate function is firing. I might get this wrong, because my confusion level is high, but here is what I think I observe in xdebug.<div><br></div><div>When I was setting a form error during validation, when it eventual made its way to drupal_process_form it wasn&#39;t doing a rebuild because of that. So I tried not setting a form error, since I&#39;m setting $form_state[rebuild]=true anyway. Now drupal_process_form does a rebuild, but what happens is that just prior to the rebuild, the #options are what I just set them to with</div><div>   $form[my_field][LANGUAGE_NONE][0][#options] = my_options_array;</div><div>in validation, but right after the rebuild, the original value is back. Do I need to set #options in more than one section of $form or somewhere in $form_state?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 11, 2015 at 12:01 PM, Jamie Holly <span dir="ltr">&lt;<a href="mailto:hovercrafter@earthlink.net" target="_blank">hovercrafter@earthlink.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>There could be something else
      overriding that in validation. Instead of using the default
      hook_node_validate, trying adding $form[&#39;#validate&#39;][] =
      &#39;my_custom_validation_function&#39; in hook_form or hook_form_alter.
      That way it&#39;s the last validation hook called. <br>
      <pre cols="72">Jamie Holly
<a href="http://hollyit.net" target="_blank">http://hollyit.net</a></pre>
      On 2/11/2015 11:45 AM, Jeff Greenberg wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Ok, I&#39;ve tried that. The last thing I do in
        hook_node_validate is $form_state[&#39;rebuild&#39;] = 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[&#39;storage&#39;] never happens.</div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Wed, Feb 11, 2015 at 10:57 AM, Jamie
          Holly <span dir="ltr">&lt;<a href="mailto:hovercrafter@earthlink.net" target="_blank">hovercrafter@earthlink.net</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000">
              <div>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[&#39;storage&#39;] and set $form_state[&#39;rebuild&#39;] =
                TRUE; and check in your hook_form or hook_form_alter for
                your $form_state[&#39;storage&#39;] setting, and if set then add
                your checkboxes. <br>
                <br>
                I suggest looking at the form_example_wizard in the
                examples module, as that&#39;s basically what you are after,
                even though it&#39;s not a typical multi-step wizard you are
                after, the logic is still the same. <br>
                <pre cols="72">Jamie Holly
<a href="http://hollyit.net" target="_blank">http://hollyit.net</a></pre>
                On 2/11/2015 10:43 AM, Jeff Greenberg wrote:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">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&#39;m wondering where $form_state
                  gets the information for the field when rebuilding the
                  form.</div>
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">On Wed, Feb 11, 2015 at 9:31
                    AM, Jeff Greenberg <span dir="ltr">&lt;<a href="mailto:listmail.ayendesigns@gmail.com" target="_blank">listmail.ayendesigns@gmail.com</a>&gt;</span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div dir="ltr">
                        <div>
                          <p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;clear:both">I
                            have a node form that contains a checkboxes
                            field with options NULL at the time the form
                            is displayed.</p>
                          <p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;clear:both">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.</p>
                          <p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;clear:both">I&#39;ve

                            tried setting #options = the new array in
                            the $form, in $form_state[original_form],
                            etc all to no avail. The field doesn&#39;t
                            change.</p>
                          <p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;clear:both">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.</p>
                          <span><font color="#888888">
                              <div><br>
                                <span><font color="#888888"> </font></span></div>
                              <span><font color="#888888">
                                </font></span></font></span></div>
                        <span><font color="#888888"> <span><font color="#888888">
                                <div><br>
                                </div>
                                -- <br>
                                <div>---
                                  <div><a href="http://drupal.org/user/367108" target="_blank">drupal.org/user/367108</a></div>
                                  <div><a href="http://linkedin.com/in/jeffrgreenberg" target="_blank">linkedin.com/in/jeffrgreenberg</a></div>
                                  <div><a href="http://accidentalcoder.com" target="_blank">accidentalcoder.com</a>
                                    / <a href="http://ayendesigns.com" target="_blank">ayendesigns.com</a></div>
                                  <div>@accidentalcoder</div>
                                </div>
                              </font></span></font></span></div>
                      <span><font color="#888888"> </font></span></blockquote>
                    <span><font color="#888888"> </font></span></div>
                  <span><font color="#888888"> <br>
                      <br clear="all">
                      <div><br>
                      </div>
                      -- <br>
                      <div>---
                        <div><a href="http://drupal.org/user/367108" target="_blank">drupal.org/user/367108</a></div>
                        <div><a href="http://linkedin.com/in/jeffrgreenberg" target="_blank">linkedin.com/in/jeffrgreenberg</a></div>
                        <div><a href="http://accidentalcoder.com" target="_blank">accidentalcoder.com</a> / <a href="http://ayendesigns.com" target="_blank">ayendesigns.com</a></div>
                        <div>@accidentalcoder</div>
                      </div>
                    </font></span></div>
                <span><font color="#888888"> <br>
                    <fieldset></fieldset>
                    <br>
                  </font></span></blockquote>
              <br><span class="HOEnZb"><font color="#888888">
            </font></span></div><span class="HOEnZb"><font color="#888888">
            <br>
            --<br>
            [ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a>
            ]<br>
          </font></span></blockquote><span class="HOEnZb"><font color="#888888">
        </font></span></div><span class="HOEnZb"><font color="#888888">
        <br>
        <br clear="all">
        <div><br>
        </div>
        -- <br>
        <div>---
          <div><a href="http://drupal.org/user/367108" target="_blank">drupal.org/user/367108</a></div>
          <div><a href="http://linkedin.com/in/jeffrgreenberg" target="_blank">linkedin.com/in/jeffrgreenberg</a></div>
          <div><a href="http://accidentalcoder.com" target="_blank">accidentalcoder.com</a>
            / <a href="http://ayendesigns.com" target="_blank">ayendesigns.com</a></div>
          <div>@accidentalcoder</div>
        </div>
      </font></span></div><span class="HOEnZb"><font color="#888888">
      <br>
      <fieldset></fieldset>
      <br>
    </font></span></blockquote>
    <br>
  </div>

<br>--<br>
[ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a> ]<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">---<div><a href="http://drupal.org/user/367108" target="_blank">drupal.org/user/367108</a></div><div><a href="http://linkedin.com/in/jeffrgreenberg" target="_blank">linkedin.com/in/jeffrgreenberg</a></div><div><a href="http://accidentalcoder.com" target="_blank">accidentalcoder.com</a> / <a href="http://ayendesigns.com" target="_blank">ayendesigns.com</a></div><div>@accidentalcoder</div></div>
</div>