在Drupal 7中,有没有办法根据特定内容更改内容类型的标准编辑表单?
例如:
我有一个带复选框的内容类型...一旦检查并保存表单,我不希望此复选框再次显示...因此根据数据库中的复选框值我要隐藏显示表单时表单字段。
我正在建立一个小型的特定项目网站,公司想要添加项目,他们的客户应该遵循某些步骤(上传一些内容,提供信息等),并且还应该能够检查某些要求,一旦这些被检查,它们就不应该对它们可见/可编辑。
此外,显示的表单字段应取决于用户的角色,然后根据内容的数据库条目进一步限制。
是否有可以实现此行为的模块? “规则”和“字段/权限”接近我的需要,但还不够。或者我是否错过了根据条件更改表单字段的可访问性的选项?
我需要的是定义逻辑的地方,如“IF(VALUEOF(CHECKBOX_1)== TRUE)那么DO_NOT_SHOW(CHECKBOX_1)”
答案 0 :(得分:13)
hook_form_alter就是这样做的方式,正如Mihaela所解释的那样,但你在这个函数中有什么选择?
如果您只想禁用字段(它会显示,但用户无法更改),您可以这样做:
$form['field_myfield']['#disabled'] = TRUE;
如果您希望隐藏它,但在编辑之前要保留它的价值是:
$form['field_myfield']['#access'] = FALSE;
即。隐藏它(我看到某人建议的地方):
hide($form['field_myfield']);
确实隐藏了该字段,但在此之后,当表单保存时,此字段具有空值,验证失败等,因此这不是一个好方法。只有当你想稍后在其他地方单独打印该字段时,隐藏才有意义。
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
在这种情况下,我使用模块条件字段 https://www.drupal.org/project/conditional_fields
例如:如果我的Dependees字段有值,则Dependent字段可以是可见/不可见,启用/禁用,必需/可选,已选中/未选中