forms - 如何在 Drupal 中隐藏用户编辑表单上的某些字段?

标签 forms drupal hook hook-form-alter

所以我有三种类型的用户——管理员、洛杉矶管理员和用户。我正在尝试对其进行设置,以便管理员和 LA 管理员无法编辑用户的用户名、密码和时区。我说的是管理员的默认用户编辑表单,表单 ID 是“user-profile-form”。

我创建了一个自定义模块,但这似乎不起作用。知道我可能做错了什么吗?

甚至 var_dump 似乎也没有输出。我已清除缓存并验证模块已启用。

 function profile_change_form_alter(&$form, $form_state, $form_id) {
    if ($form_id === 'user-profile-form') {
       var_dump ($form);

       hide($form['account']['pass']);
       hide($form['account']['current_pass_required_values']);
       hide($form['account']['current_pass']);
    }
}

最佳答案

如果您使用 hide()您将删除该字段,但 hide 更多的是用于“延迟”字段渲染...就像您隐藏它一样,但是(在模板文件中)您在其他地方打印它。
因为,如果您稍后不打印它,它将不会在页面中呈现,不会被保存,如果它是强制性的,您将收到验证错误等等。

如果你想隐藏它,所以用户看不到它,但你希望表单保留字段的先前值,使用类似:

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

如果您希望它可见但已禁用(用户无法更改它的值),则:
$form['field_yourfield']['#disabled'] = TRUE;

关于forms - 如何在 Drupal 中隐藏用户编辑表单上的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071064/

相关文章:

javascript - 在 HTML 表单上使用 GET 作为方法不会附加到 URL 中吗?

php - 在新页面/同一页面上构建新幻灯片

android - Xposed:如何在App启动时获取Context

java - 如何使用play框架2绑定(bind)和处理表单中的复选框列表

php - 更新个人详细信息 PHP 脚本

jQuery 在发布表单操作之前淡出页面

Android 到 Drupal cookie 传输 Q2

drupal - 如何将博客推广到 drupal 主页以外的页面?

c++ - 如何从注入(inject)的 DLL 中获取程序窗口?

svn - 在 Windows 中为 subversion 编写钩子(Hook)的最佳策略