Câu trả lời:
Bạn có thể thử Mô-đun cấp phép trường
Đặc trưng
- Cho phép quyền trường trên bất kỳ thực thể nào, không chỉ các nút.
- Quyền truy cập trường dựa trên vai trò cho phép xem khác nhau theo mẫu dựa trên quyền truy cập của người dùng.
- Quyền cấp độ tác giả cho phép xem và chỉnh sửa các trường dựa trên ai là chủ sở hữu thực thể.
- Quyền cho từng lĩnh vực không được bật theo mặc định. Thay vào đó, quản trị viên có thể kích hoạt các quyền này một cách rõ ràng cho các trường có tính năng này là cần thiết.
Nếu bạn muốn làm điều đó trong mô-đun tùy chỉnh
my_module_form_user_profile_form_alter(&$form, &$form_state) {
// Since it is on registration form, field might be reqruied.
$form['your_field']['#required'] = FALSE;
$form['your_field']['#access'] = FALSE;
}
my_module_form_user_register_form_alter
không my_module_form_user_profile_form_alter
.
Hãy thử sử dụng hook_form_alter
, xem ví dụ dưới đây:
function MODULENAME_form_alter(&$form_state, $form_id){
global $user;
//$form_id :: user detail edit form id
if($user->uid != 0 && $form_id == "required_form_id"){
//$field :: requied field name
$form[$field]['#access'] = FALSE;
}
}
đặt mã này trong một mô-đun tùy chỉnh, trường sẽ có thể trên nội dung mới nhưng sẽ bị vô hiệu hóa để chỉnh sửa nó.
if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);
// for user form use '#user' instead of '#node' and uid instead of nid
if (isset($form['#node']) && isset($form['#node']->nid)){
// Prevent editing a field once the node has been created
// hiding the field entirely on the edit form.
$form['field_name']['#access'] = FALSE;
// disable update field on the edit form (gray color).
$form['field_name']['#disabled'] = TRUE;
}
}