it-swarm-id.com

Cara menyembunyikan dan / atau mencegah akses ke bidang dalam formulir, seperti group_audience untuk grup organik

Ini telah mengganggu saya untuk sementara waktu .. Ketika saya mencoba untuk menyembunyikan bidang seperti bidang audiens grup, atau pengaturan penerbitan dari formulir, pada validasi formulir mengatur kedua bidang ini ke nilai nol, meskipun nilai defaut sebagai telah dinyatakan dengan benar.

Saya mencoba menggunakan Invisible, #access, unset hidden nothing work! Ini sangat menyusahkan karena untuk proyek saya saat ini, pengguna dapat mengedit hanya sebagian kecil dari profil mereka pada saat itu, misalnya hanya alamat atau gambar, jadi jika saya menyembunyikan audiens grup pengguna akhirnya dikeluarkan dari grup yang dimilikinya di setiap sunting.

Saya akhirnya menggunakan kode di bawah ini untuk menyembunyikan bidang ini sambil tetap menjaga pengguna dalam grup mereka.

$variables['user_edit_about']['group_audience']= $temp['group_audience'];       
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';

Adakah yang akan memikirkan cara yang lebih baik untuk mencapai ini?

Terima kasih

9
silkAdmin

Edit:

Oke, saya sudah menemukannya. Letakkan ini di modul khusus Anda:

function example_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'story_node_form') {
        $form['title']['#value'] = 'hot stuff';
        $form['title']['#access'] = FALSE;

    }
}

Ini akan menetapkan judul simpul cerita menjadi 'barang panas' dan TIDAK akan ditampilkan di halaman karena #access = FALSE;

Anda dapat menambahkan lebih banyak kontrol granularity di dalam hook_form_alter () seperti

  global $user;

  // Check to see if $user has does not have the administrator role.
  if (!in_array('administrator', array_values($user->roles))) {
    $form['title']['#access'] = FALSE;
  }

Ini berfungsi untuk Drupal 6 & 7.

Jawaban Lama (abaikan):

Sudah beberapa saat sejak saya melakukan sesuatu seperti ini, jadi saya mungkin salah. Jika Anda mengatur [#value] Dari item formulir, itu tidak akan terlihat pada formulir.

Saya melakukan ini di Drupal 6, hook_form_alter() dalam modul khusus. Saya tidak tahu apakah itu akan bekerja di Drupal 7 dan Saya tidak tahu apakah Anda bisa melakukannya dalam fungsi preproses

6
iStryker

Anda juga bisa menambahkan kelas CSS 'elemen-tersembunyi' ke elemen formulir

$form['user_edit_about']['group_audience']['#attributes']['class'][] = 'element-hidden';

Seperti yang disebutkan iStryker sebelumnya, masih mungkin untuk mengubah nilai melalui manipulasi DOM. Namun, ini adalah cara yang bagus dan mudah untuk menyembunyikan bidang formulir (atau elemen render lainnya). element-hidden kelas didefinisikan dalam system.base.css.

5
Chaulky