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?
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;}
$ 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.
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 idif($user->uid !=0&& $form_id =="required_form_id"){//$field :: requied field name
$form[$field]['#access']= FALSE;}}
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 nidif(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;}
Jawaban:
Anda dapat mencoba Modul Izin Bidang
sumber
Jika Anda ingin melakukannya dalam modul khusus
sumber
my_module_form_user_register_form_alter
, bukanmy_module_form_user_profile_form_alter
.Coba dengan kode ini:
sumber
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.
sumber
sumber
Coba gunakan
hook_form_alter
, lihat contoh di bawah ini:sumber
tempat kode ini dalam modul khusus, bidang akan dapat pada konten baru tetapi akan dinonaktifkan untuk mengeditnya.
}
sumber