Drupal:我怎样才能避免这个表单项被折叠?

时间:2010-09-29 13:52:02

标签: drupal drupal-6

我真的不明白为什么这不起作用。我想避免折叠特定的表单项。

这是我要修改的元素(使用下面的代码更改后):

 [taxonomy] => Array
        (
            [tags] => Array
                (
                    [1] => Array
                        (
                            [#type] => textfield
                            [#title] => Tags
                            [#description] => A comma-separated list of terms describing this content. Example: funny, bungee jumping, "Company, Inc.".
                            [#required] => 0
                            [#default_value] => 
                            [#autocomplete_path] => taxonomy/autocomplete/1
                            [#weight] => 0
                            [#maxlength] => 1024
                            [#collapsed] => 0
                            [#collapsible] => 0
                        )

                    [#collapsed] => 0
                    [#collapsible] => 0
                )

            [#weight] => -3
            [#tree] => 1
            [#collapsed] => 0
            [#collapsible] => 0

这是我在hook_form_alter中的代码(我确定表单是由代码修改的):

 $form['taxonomy']['#collapsed'] = 0;
 $form['taxonomy']['tags']['#collapsed'] = 0;
 $form['taxonomy']['tags'][2]['#collapsed'] = 0;

 $form['taxonomy']['#collapsible'] = 0;
 $form['taxonomy']['tags']['#collapsible'] = 0;
 $form['taxonomy']['tags'][3]['#collapsible'] = 0;

但它不起作用。该元素始终处于折叠状态。我刷新了所有的缓存 alt text

http://dl.dropbox.com/u/72686/tagsform.txt

Update2

$form['taxonomy']['#required'] = TRUE;
$form['taxonomy']['tags']['#required'] = TRUE;
$form['taxonomy']['tags'][5]['#required'] = TRUE;

alt text

2 个答案:

答案 0 :(得分:0)

应该有一些theme_或pre_process_函数改变输出的打印方式,我看不到$ form array中textfield下的复选框... 这些复选框的位置可能来自字段集。

答案 1 :(得分:0)

从您发布的数组中,看起来您尝试在分类模块实际将其转换为字段集之前调整表单元素(请注意,该数组中没有'#type' => 'fieldset'声明)。如果您查看taxonomy_form_alter(),您可以看到它在hook_form_alter()实现中,节点中的分类数组被“转换”为实际的表单API元素。

所以我的猜测是你的调整驻留在一个hook_form_alter()实现中,该实现在分类模块之前运行,这样你的崩溃状态的声明会被分类模块立即覆盖你设置它们。

尝试adjust your modules weight高于分类模块的内容,看看这是否会改变一切。 (请注意,更改重量可能会影响模块执行的其他操作,因此请在完成后仔细测试!)