Sembunyikan fieldgroup CCK menggunakan #states di hook_form_alter ()?

9

Saya memiliki modul khusus, dan saya mencoba untuk menyembunyikan grup CCK menggunakan "#states" ketika item tertentu dipilih dalam daftar pilih drop-down.

Saya telah mencoba menggunakan status dari dalam hook_form_alter (), seperti:

$form['group_mygroup']['#states']['invisible'] = array(
  ':input[name="field_trigger[' . LANGUAGE_NONE. ']"]' => array( 'value' => 'hide' ),
);

Ini sepertinya tidak melakukan apa-apa.

Saya telah melihat perubahan bobot modul saya sesuai berbagai situs seperti http://proofgroup.com/blog/2008/dec/modifying_cck_fieldgroups_hook_form_alter .

tapi tetap tidak berhasil. Saya bisa menyembunyikan semua elemen formulir di dalam fieldgroup menggunakan status tetapi bukan grup bidang itu sendiri. Adakah yang punya ide?

thearearson
sumber
Untuk pemirsa di masa depan: @ andriy-malish 'jawaban adalah yang benar.
UltraBob

Jawaban:

11
/ **
 * Menerapkan hook_field_group_build_pre_render_alter.
 * /
function mymodule_field_group_build_pre_render_alter (& $ element) {
  if (isset ($ element ['# form_id'])) {
    if ($ element ['# form_id'] == 'mynodetype_node_form') {
      $ element ['group_myfieldgroup'] ['# States'] = array (
        'terlihat' => array (
          ': masukan [name = "field_myfield [und]"]' => array ('checked' => TRUE),
        )
      );
      $ element ['group_myfieldgroup'] ['# id'] = 'group_myfieldgroup';
    }
  }
}

Saya menggunakan kait ini untuk menyembunyikan grup bidang saya. Itu hanya terlihat jika kotak centang field_myfielddicentang.

Untuk mengeksplorasi $elementvariabel dalam pengait ini saya gunakan

die('<pre>'.print_r($element, 1).'</pre>');

bukannya dpm().

Semoga ini membantu :)

Andriy Malish
sumber
1

Fieldgroup tidak didefinisikan di root $form. Sepertinya Anda sebaiknya tidak menggunakannya $form['group_mygroup'], tetapi $form['#fieldgroups']['group_mygroup'].

Andrew
sumber
0

Anda dapat melihat pada modul contoh untuk melihat bagaimana mereka menyembunyikan fieldset . Berdasarkan itu saya pikir kode Anda harus:

$form['group_mygroup']['#states'] = array(
  'invisible' => array(
    ':input[name="field_trigger"]' => array('value' => 'hide'),
  ),
),
rocketeerbkw
sumber
2
Terima kasih atas saran Anda. Padahal itu sama dengan kode saya hanya menyatakan sedikit berbeda. Saya bisa menyembunyikan bidang jika saya menyatakan formulir dan bidang menggunakan FAPI. Masalah saya adalah tidak berfungsi dengan grup bidang CCK di hook_form_alter ().
thepearson