1

在 Drupal 7 中,有没有办法根据特定内容更改内容类型的标准编辑表单?

例如:

我有一个带有复选框的内容类型...一旦选中并保存表单,我不希望此复选框再可见...因此,根据数据库中的复选框值,我想隐藏表单字段时显示表格。

我正在建立一个小型的特定项目站点,公司想要添加项目,他们的客户应该遵循某些步骤(上传一些内容,提供信息等),并且还应该能够检查某些要求,并且一次这些已被选中,它们不应该对他们可见/不可编辑。

此外,显示的表单字段应取决于用户的角色,然后进一步受限于内容的数据库条目。

是否有一个模块可以实现这种行为?“规则”和“字段/权限”接近我需要的,但还不够。还是我只是错过了根据条件更改表单字段可访问性的选项?

我需要在某个地方定义一个逻辑,例如“IF (VALUEOF(CHECKBOX_1) == TRUE) THEN DO_NOT_SHOW(CHECKBOX_1)”

4

3 回答 3

13

hook_form_alter 是执行此操作的方法,正如 Mihaela 所解释的,但是您在该函数中有哪些选项?

  • 如果您只想禁用字段(它将可见,但用户无法更改它),您可以这样做:

    $form['field_myfield']['#disabled'] = TRUE;

  • 如果你希望它被隐藏,但在编辑之前保持它的价值,这样做的方法是:

    $form['field_myfield']['#access'] = FALSE;

即隐藏它(在某处我看到有人建议):

hide($form['field_myfield']);

确实隐藏了该字段,但是之后,当保存表单时,该字段为空值,验证失败等,所以这不是一个好方法。仅当您想稍后在其他地方单独打印该字段时,隐藏才有意义。

于 2014-01-10T10:11:42.877 回答
3
function your_module_form_alter(&$form, &$form_state, $form_id){

    switch($form_id) {
    case 'nameOfTheNode_node_form':
        //your code here. check the value from from_state.
    break;
    }
}
于 2013-09-13T07:50:07.273 回答
0

在这种情况下,我使用模块条件字段 https://www.drupal.org/project/conditional_fields

例如:如果我的 Dependees 字段有值,则 Dependent 字段可以是可见/不可见、启用/禁用、必需/可选、选中/未选中

于 2016-06-16T02:29:41.053 回答