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?


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.

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

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

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.


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

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;

      }
   }

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

}

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.