Re: Changing checkboxes options during hook_node_validate
Jeff Greenberg <[email protected]> Wed, 11 Feb 2015 12:10:11 -0500
| Newsgroups | gmane.comp.php.drupal.support |
|---|---|
| Message-ID | <CAPpCgRbsVAEWWt=rQ8b7RtMxsZPdLm-=NSM6qzrDX+RVg0w0rA@mail.gmail.com> |
--===============6797677335291744551==
Content-Type: multipart/alternative; boundary=001a113e74e47ebc91050ed313c3
--001a113e74e47ebc91050ed313c3
Content-Type: text/plain; charset=UTF-8
Tried this. So my function signature is:
function si_core_node_validate($node, &$form, &$form_state) {
and the last thing I do is:
$form['refs'][LANGUAGE_NONE][0]['#options'] = $options;
$form_state['rebuild'] = TRUE;
form_set_error('refs', 'Select the potential entity links to be
processed.');
yet the form displays the original field option.
On Wed, Feb 11, 2015 at 11:58 AM, Metzler, David <[email protected]>
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:* [email protected] [mailto:[email protected]] *On
> Behalf Of *Jeff Greenberg
> *Sent:* Wednesday, February 11, 2015 8:45 AM
> *To:* [email protected]
> *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 <[email protected]>
> 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 <
> [email protected]> 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
>
> linkedin.com/in/jeffrgreenberg
>
> accidentalcoder.com / ayendesigns.com
>
> @accidentalcoder
>
>
>
>
>
> --
>
> ---
>
> drupal.org/user/367108
>
> linkedin.com/in/jeffrgreenberg
>
> accidentalcoder.com / ayendesigns.com
>
> @accidentalcoder
>
>
>
>
>
>
> --
> [ Drupal support list | http://lists.drupal.org/ ]
>
>
>
>
>
> --
>
> ---
>
> drupal.org/user/367108
>
> linkedin.com/in/jeffrgreenberg
>
> accidentalcoder.com / ayendesigns.com
>
> @accidentalcoder
>
> --
> [ Drupal support list | http://lists.drupal.org/ ]
>
--
---
drupal.org/user/367108
linkedin.com/in/jeffrgreenberg
accidentalcoder.com / ayendesigns.com
@accidentalcoder
--001a113e74e47ebc91050ed313c3
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Tried this. So my function signature is:<div>function si_c=
ore_node_validate($node, &$form, &$form_state) {<br></div><div><br>=
</div><div>and the last thing I do is:</div><div><br></div><div><div>=C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 $form['refs'][LANGUAGE_NONE][0]=
['#options'] =3D $options;</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 $form_state['rebuild'] =3D TRUE;</div><div>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 form_set_error('refs', 'Select =
the potential entity links to be processed.');</div></div><div><br></di=
v><div>yet the form displays the original field option.</div></div><div cla=
ss=3D"gmail_extra"><br><div class=3D"gmail_quote">On Wed, Feb 11, 2015 at 1=
1:58 AM, Metzler, David <span dir=3D"ltr"><<a href=3D"mailto:metzlerd@ev=
ergreen.edu" target=3D"_blank">[email protected]</a>></span> wrote:=
<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-lef=
t:1px #ccc solid;padding-left:1ex">
<div lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1f497d">Actually you should be ab=
le to alter the form in the validation function yes?=C2=A0 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? =C2=A0=
=C2=A0<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1f497d"><br>
Dave<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1f497d"><u></u>=C2=A0<u></u></spa=
n></p>
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:"=
;Tahoma","sans-serif"">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:"Tahoma","sans-serif""> <a href=
=3D"mailto:[email protected]" target=3D"_blank">support-bounces@dr=
upal.org</a> [mailto:<a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a>]
<b>On Behalf Of </b>Jeff Greenberg<br>
<b>Sent:</b> Wednesday, February 11, 2015 8:45 AM<br>
<b>To:</b> <a href=3D"mailto:[email protected]" target=3D"_blank">support@=
drupal.org</a><br>
<b>Subject:</b> Re: [support] Changing checkboxes options during hook_node_=
validate<u></u><u></u></span></p>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
<div>
<p class=3D"MsoNormal">Ok, I've tried that. The last thing I do in hook=
_node_validate is $form_state['rebuild'] =3D true; What I notice is=
that hook_form_node_form_alter does not fire between then and the form bei=
ng redisplayed, so my pulling the options from $form_state['storage'=
;]
never happens.<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
<div>
<p class=3D"MsoNormal">On Wed, Feb 11, 2015 at 10:57 AM, Jamie Holly <<a=
href=3D"mailto:[email protected]" target=3D"_blank">hovercrafter@=
earthlink.net</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class=3D"MsoNormal">The checkboxes have to be added in the form creation=
stage, so in either hook_form or hook_form_alter. Then in the hook_validat=
e, set a variable on $form_state['storage'] and set $form_state[=
9;rebuild'] =3D TRUE; and check in your hook_form
or hook_form_alter for your $form_state['storage'] setting, and if=
set then add your checkboxes.
<br>
<br>
I suggest looking at the form_example_wizard in the examples module, as tha=
t's basically what you are after, even though it's not a typical mu=
lti-step wizard you are after, the logic is still the same.
<br>
<br>
<u></u><u></u></p>
<pre>Jamie Holly<u></u><u></u></pre>
<pre><a href=3D"http://hollyit.net" target=3D"_blank">http://hollyit.net</a=
><u></u><u></u></pre>
<p class=3D"MsoNormal">On 2/11/2015 10:43 AM, Jeff Greenberg wrote:<u></u><=
u></u></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class=3D"MsoNormal">One thing that is either part of the issue, or a sep=
arate issue that impacts this, is that the checkboxes field is added via ho=
ok_form_alter. I notice that although the field appears in $form_state[valu=
es] 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.<u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
<div>
<p class=3D"MsoNormal">On Wed, Feb 11, 2015 at 9:31 AM, Jeff Greenberg <=
<a href=3D"mailto:[email protected]" target=3D"_blank">listmai=
[email protected]</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p style=3D"margin-right:0in;margin-bottom:12.0pt;margin-left:0in;vertical-=
align:baseline">
I have a node form that contains a checkboxes field with options NULL at th=
e time the form is displayed.<u></u><u></u></p>
<p style=3D"margin-right:0in;margin-bottom:12.0pt;margin-left:0in;vertical-=
align:baseline">
During node_validate, if certain criteria is met, an array of options (chec=
kboxes) is created, and the form needs to be redisplayed with the checkboxe=
s as part of it.<u></u><u></u></p>
<p style=3D"margin-right:0in;margin-bottom:12.0pt;margin-left:0in;vertical-=
align:baseline">
I've tried setting #options =3D the new array in the $form, in $form_st=
ate[original_form], etc all to no avail. The field doesn't change.<u></=
u><u></u></p>
<p style=3D"margin-right:0in;margin-bottom:12.0pt;margin-left:0in;vertical-=
align:baseline">
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 ne=
w 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.<u></u><u></u></p>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><u></u>=C2=A0<u></u></=
span></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><u></u>=C2=A0<u></u></=
span></p>
</div>
<p class=3D"MsoNormal"><span><span style=3D"color:#888888">-- </span><u></u=
><u></u></span></p>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888">--- </span><u></u><u><=
/u></p>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://drup=
al.org/user/367108" target=3D"_blank">drupal.org/user/367108</a><u></u><u><=
/u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://link=
edin.com/in/jeffrgreenberg" target=3D"_blank">linkedin.com/in/jeffrgreenber=
g</a><u></u><u></u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://acci=
dentalcoder.com" target=3D"_blank">accidentalcoder.com</a> /
<a href=3D"http://ayendesigns.com" target=3D"_blank">ayendesigns.com</a><u>=
</u><u></u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888">@accidentalcoder<u></u=
><u></u></span></p>
</div>
</div>
</div>
</div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><br>
<br clear=3D"all">
</span><span><u></u><u></u></span></p>
<div>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
</div>
<p class=3D"MsoNormal"><span><span style=3D"color:#888888">-- </span><u></u=
><u></u></span></p>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888">--- </span><u></u><u><=
/u></p>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://drup=
al.org/user/367108" target=3D"_blank">drupal.org/user/367108</a><u></u><u><=
/u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://link=
edin.com/in/jeffrgreenberg" target=3D"_blank">linkedin.com/in/jeffrgreenber=
g</a><u></u><u></u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888"><a href=3D"http://acci=
dentalcoder.com" target=3D"_blank">accidentalcoder.com</a> /
<a href=3D"http://ayendesigns.com" target=3D"_blank">ayendesigns.com</a><u>=
</u><u></u></span></p>
</div>
<div>
<p class=3D"MsoNormal"><span style=3D"color:#888888">@accidentalcoder<u></u=
><u></u></span></p>
</div>
</div>
</div>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><u></u>=C2=A0<u></u><=
/p>
</blockquote>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
</div>
<p class=3D"MsoNormal"><br>
--<br>
[ Drupal support list | <a href=3D"http://lists.drupal.org/" target=3D"_bla=
nk">http://lists.drupal.org/</a> ]<u></u><u></u></p>
</div>
<p class=3D"MsoNormal"><br>
<br clear=3D"all">
<u></u><u></u></p>
<div>
<p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p>
</div>
<p class=3D"MsoNormal">-- <u></u><u></u></p>
<div>
<p class=3D"MsoNormal">---<u></u><u></u></p>
<div>
<p class=3D"MsoNormal"><a href=3D"http://drupal.org/user/367108" target=3D"=
_blank">drupal.org/user/367108</a><u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><a href=3D"http://linkedin.com/in/jeffrgreenberg" ta=
rget=3D"_blank">linkedin.com/in/jeffrgreenberg</a><u></u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal"><a href=3D"http://accidentalcoder.com" target=3D"_bl=
ank">accidentalcoder.com</a> /
<a href=3D"http://ayendesigns.com" target=3D"_blank">ayendesigns.com</a><u>=
</u><u></u></p>
</div>
<div>
<p class=3D"MsoNormal">@accidentalcoder<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
<br>--<br>
[ Drupal support list | <a href=3D"http://lists.drupal.org/" target=3D"_bla=
nk">http://lists.drupal.org/</a> ]<br></blockquote></div><br><br clear=3D"a=
ll"><div><br></div>-- <br><div class=3D"gmail_signature">---<div><a href=3D=
"http://drupal.org/user/367108" target=3D"_blank">drupal.org/user/367108</a=
></div><div><a href=3D"http://linkedin.com/in/jeffrgreenberg" target=3D"_bl=
ank">linkedin.com/in/jeffrgreenberg</a></div><div><a href=3D"http://acciden=
talcoder.com" target=3D"_blank">accidentalcoder.com</a> / <a href=3D"http:/=
/ayendesigns.com" target=3D"_blank">ayendesigns.com</a></div><div>@accident=
alcoder</div></div>
</div>
--001a113e74e47ebc91050ed313c3--
--===============6797677335291744551==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--
[ Drupal support list | http://lists.drupal.org/ ]
--===============6797677335291744551==--