Sembunyikan atau nonaktifkan bidang setelah pendaftaran

8

Saya memiliki 1 bidang pada halaman pendaftaran pengguna yang tidak boleh diubah setelah pendaftaran akun. Itu perlu disembunyikan atau dinonaktifkan. Modul mana yang bisa melakukan ini?

Azz Kawa
sumber
terkait: drupal.org/node/374416
Mołot

Jawaban:

4

Anda dapat mencoba Modul Izin Bidang

fitur

  • Aktifkan izin bidang pada entitas apa pun, bukan hanya simpul.
  • Izin bidang berbasis peran memungkinkan pola tampilan yang berbeda berdasarkan pada apa yang dimiliki pengguna.
  • Izin tingkat penulis memungkinkan tampilan dan pengeditan bidang berdasarkan siapa pemilik entitas.
  • Izin untuk setiap bidang tidak diaktifkan secara default. Sebagai gantinya, administrator dapat mengaktifkan izin ini secara eksplisit untuk bidang di mana fitur ini diperlukan.
Bipin K
sumber
Bagaimana cara membedakan antara pembuatan dan pengeditan pengguna saat bidangnya sama? Saya tidak mengatakan itu tidak bisa, saya benar-benar ingin tahu caranya. Dan saya kira OP juga akan.
Mołot
Ini akan menjadi izin bidang berdasarkan peran, perlu memberikan izin hanya untuk anonim (tidak yakin apakah kondisi ini berfungsi untuk kasus ini).
Bipin K
8

Jika Anda ingin melakukannya dalam modul khusus

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;
}
arpitr
sumber
Bagaimana cara membedakan antara pembuatan dan pengeditan pengguna?
DRUPWAY
2
@ Solution Anda tidak perlu - untuk formulir pendaftaran my_module_form_user_register_form_alter, bukan my_module_form_user_profile_form_alter.
Mołot
1
hook adalah hook_form_FORM_ID_alter FORM_ID untuk registrasi dan edit diefferent
arpitr
OK mengerti. Saya telah memeriksa kapan pengguna mendaftarkan id formulirnya "user-register-form" dan ketika pengguna mengedit id bentuknya "user-profile-form" secara normal.
DRUPWAY
Ya, seperti yang diharapkan :)
arpitr
1

Coba dengan kode ini:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }
Adi
sumber
2
Harap tambahkan beberapa kata keterangan.
Mołot
$ form ['field_name'] ['# disabled'] = TRUE; juga berfungsi.
pinueve
1

Buat properti visibilitas bidang hanya untuk pengguna anonim. Jadi Nilai akan disimpan pada saat pendaftaran. Maka tidak ada yang bisa mengakses bidang itu. Setelah Anda memasang modul izin bidang, Anda akan menemukan opsi ini untuk diterapkan hanya untuk pengguna anonim saja.

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

Coba gunakan hook_form_alter, lihat contoh di bawah ini:

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;

      }
   }
Aradhya
sumber
0

tempat kode ini dalam modul khusus, bidang akan dapat pada konten baru tetapi akan dinonaktifkan untuk mengeditnya.

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

}

tajam
sumber