如何以drupal形式隐藏字段

时间:2010-12-16 13:32:51

标签: php drupal forms drupal-6

我在drupal6中有一个特定的内容类型。我想实现一个钩子,它从添加表单中隐藏该内容类型的主体字段,但不是从编辑表单中隐藏。我怎么能这样做?

4 个答案:

答案 0 :(得分:9)

您可以使用hook_form_alter。您可以通过编程方式更改表单api构建的内容。这将为您提供完整的$ form数组,您只需unset($form['the_field_you_dont_want']);即可。

但摆脱身体字段的更简单方法是在编辑内容类型中有一个标记为'身体字段标签的字段:'只需将其留空即可省略正文字段。

答案 1 :(得分:9)

unset似乎也会破坏该值,#access属性也是如此。 我只是用它来隐藏一个字段(在这种情况下是一个引用,如果它是使用URL预设的:

$form['field_reference']['#prefix'] = "<div class='hide'>";
$form['field_reference']['#suffix'] = "</div>";

答案 2 :(得分:6)

此处找到的解决方案https://drupal.stackexchange.com/questions/11237/hide-field-in-node-add-page对我很有用。在这里,我重复moon.watcher的解决方案:

function test_remove_filed_form_alter(&$form, &$form_state) {

    if (arg(0) == 'node' && arg(1) == 'add') {
    $form['field_test']['#access'] = 0;
    }

}

使用unset()的缺点是它将完全删除该字段,并且您无法继续使用,例如,在节点预设上。在我的情况下,我只想在第一时间从表单中删除该字段,但我想在以后保存节点之前填充它。由于这个原因,上面链接上的解决方案对我来说非常合适。

答案 3 :(得分:1)

您是否在模块中实现了内容类型(使用hook_node_info)?如果是这样,请将has_body属性设置为false。