[drupal-devel] Question on taxonomy_form() function

Morbus Iff morbus at disobey.com
Wed Mar 30 14:32:22 UTC 2005

> My problem is that the second vocabulary (vid==2, tid=={3,7}) allows multiple
> selection, whereas the first vocabulary (vid==1, tid==1) does not. The way
> the underlying form_select() called by taxonomy_form() seems to work is that
> it uses a subarray for the field only if multiple selection is allowed. This
> There isn't a good way to match up those sub-subarrays with the vid to which

In my fiddling with folksonomy, I know what you're talking about. The 
taxonomy form doesn't, in any instance, give a damn about the vid. The 
ONLY effect of choosing "Multiple select" is the UI element: there is no 
underlying code that actually checks to make sure only $n terms were 
passed for a particular $vid. As a bug, "Multiple select is determined by 
form UI, not logic."

With that said, the $vid isn't required for taxonomy_save to work. To the 
underlying code, all it cares about is the $nid and the $tid, which get 
saved into term_data. The $vid isn't required for this - the $tids are 
unique so you can always find the $vid later on in life. The subarray 
you're seeing is just a side-effect of the "Multiple select" option; the 
"no good way to match up with the $vid" is entirely "by design".

If you're really insanely interested in the $vid, you could use the 
_nodeapi on 'validate' to enforce your own checks: look over each $tid, 
find the matching $vid, and check against vocabulary.multiple, and 
form_set_error if you received more than you expected.

> they point, so simple conditional logic inside my foreach{} loop is not going
> to be feasible if the site administrator has associated more than one multi-term-

I'm not sure why you actually /need/ the $vid.

Morbus Iff ( you are nothing without your robot car, NOTHING! )
Culture: http://www.disobey.com/ and http://www.gamegrene.com/
Spidering Hacks: http://amazon.com/exec/obidos/ASIN/0596005776/disobeycom
icq: 2927491 / aim: akaMorbus / yahoo: morbus_iff / jabber.org: morbus

More information about the drupal-devel mailing list