Ẩn hoặc tắt trường sau khi đăng ký


8

Tôi có 1 trường trên trang đăng ký người dùng không nên thay đổi sau khi đăng ký tài khoản. Nó cần phải được ẩn hoặc vô hiệu hóa. Những mô-đun có thể làm điều này?


Câu trả lời:


4

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.

Làm cách nào để phân biệt giữa tạo và chỉnh sửa người dùng khi cùng một trường? Tôi không nói là không thể, tôi thực sự muốn biết làm thế nào. Và tôi đoán OP cũng vậy.
Mołot

Đó sẽ là quyền của trường dựa trên vai trò, chỉ cần cấp quyền cho ẩn danh (không chắc điều kiện này sẽ hoạt động cho trường hợp này).
Bipin K

8

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;
}

Làm thế nào nó có thể phân biệt giữa tạo và chỉnh sửa người dùng?
DRUPWAY

2
@ Giải quyết Bạn không cần phải - đối với mẫu đăng ký, sẽ my_module_form_user_register_form_alterkhông my_module_form_user_profile_form_alter.
Mołot

1
hook là hook_form_FORM_ID_alter FORM_ID để đăng ký và chỉnh sửa là không hiệu quả
arpitr

OK đã nhận nó. Tôi đã kiểm tra khi người dùng đăng ký id mẫu "user-register-form" và khi người dùng chỉnh sửa id mẫu "user-profile-form" thông thường.
DRUPWAY

Có, như mong đợi :)
arpitr

1

Hãy thử với mã này:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }

2
Vui lòng thêm vài từ mô tả.
Mołot

$ form ['field_name'] ['# tật'] = TRUE; cũng hoạt động.
pinueve

1

Tạo thuộc tính hiển thị trường cho người dùng ẩn danh. Vì vậy, Giá trị sẽ được lưu trữ tại thời điểm đăng ký. Sau đó, không ai có thể truy cập vào lĩnh vực đó. Khi bạn cài đặt mô-đun cấp phép trường, bạn sẽ thấy tùy chọn này chỉ áp dụng cho người dùng ẩn danh.


1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}

0

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;

      }
   }

0

đặ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;
}

}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.