2014-03-04 53 views
0

我想通过一个暴露的表单过滤器上的选择列表来循环,并隐藏我不需要的术语。如何使用form alter获取Drupal中选择选项的值?

随着我的选择框被称为TTD-TID我想:

foreach ($form['ttd_tid']['#options'] as $tid => $term){ 
    if (in_array($tid,$child_terms_tids)){ 
        //leave it 

       }else{ 
        //remove it 
        unset($form['ttd_tid']['#options'][$tid]); 
       } 
} 

但是$ TID是不是选项值。这似乎是伯爵。

我试图 的foreach($形式[ 'ttd_tid'] [ '#选项'] [ '选项']为$ TID => $项){

但是,这也不能工作。

本质上,我需要将选项的值与数组进行比较并隐藏它。我似乎无法得到它的工作,因为$ tid似乎是另一个数组。

我$形式阵列看起来像这样

阵列([#info] =>数组([滤波器-field_things_to_do_tags_tid] =>数组([操作] => field_things_to_do_tags_tid_op [值] => ttd_tid [标号] = >要做的事情Tags [description] =>)[ttd_tid] => Array([#type] => select [#options] => Array [[All] => - Any - [0] => stdClass Object )[] => stdClass Object([option] => Array([63] => -Theme Parks))[2] => stdClass Object([选项] => Array([611] => -Water Parks))[3] => stdClass Object([option] => Array([612] => Arts,Culture & History))[4] => ([option] => Array([1] => -Architecture & Landmarks))[5] => stdClass Ob ject([option] => Array([30] => -Galleries))[6] => stdClass Object([option] => Array([32] => -History & Culture))[7] => stdClass对象([选项] =>数组([83] => -Museums))[8] =>,等等等等

回答

1

尝试

foreach ($form['ttd_tid']['und']['#options'] as $tid => $term){ 

如果使用以下不工作内你改变形成它会打印出数组/管理/报告/ DBLOG时加载页面

watchdog('$form', '<pre>'.print_r($form, true).'</pre>'); 
+0

谢谢您的回复[UND]没有工作。我也粘贴了上面的表单结果。 $ form ['ttd_tid'] ['options'] ['All'] ['option'] and $ form ['ttd_tid'] ['#options'] ['option']] 但没有喜乐。 –

+0

每个值都在一个名为'option'的对象内,因此您需要在in_array函数中使用'option'的值 – pete80

+0

谢谢Pete! –

相关问题