Hook_form_alter () içinde #states kullanarak bir CCK alan grubu gizlensin mi?


9

Özel bir modül var ve açılır bir seçim listesinde belirli bir öğe seçildiğinde bir CCK alan grubunu "#states" kullanarak gizlemeye çalışıyorum.

Ben gibi hook_form_alter () içinde devletleri kullanarak denedim:

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

Bu hiçbir şey yapmıyor gibi görünüyor.

Modülümün ağırlığını http://proofgroup.com/blog/2008/dec/modifying_cck_fieldgroups_hook_form_alter gibi çeşitli sitelere göre değiştirmeye baktım .

ama yine de boşuna. Durumları kullanarak alan grubundaki tüm form öğelerini gizleyebilirim, ancak alan grubunun kendisini değil. Herhangi bir fikri olan var mı?


Gelecekteki izleyiciler için: @ andriy-malish 'cevabı doğrudur.
UltraBob

Yanıtlar:


11
/ **
 * Hook_field_group_build_pre_render_alter uygular.
 * /
işlev mymodule_field_group_build_pre_render_alter (& $ element) {
  if (isset ($ element ['# form_id']))) {
    if ($ element ['# form_id'] == 'mynodetype_node_form') {
      $ element ['group_myfieldgroup'] ['# states'] = dizi (
        'visible' => dizi (
          ': input [name = "field_myfield [und]"]' => dizi ('işaretli' => DOĞRU),
        )
      );
      $ element ['group_myfieldgroup'] ['# id'] = 'grup_alanimgrubu';
    }
  }
}

Alan grubumu gizlemek için bu kancayı kullanıyorum. Yalnızca onay kutusu field_myfieldişaretliyse görünür .

Bu kancadaki $elementdeğişkeni keşfetmek için kullandım

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

yerine dpm().

Umarım yardımcı olmuştur :)


1

Alan grupları, kökünde tanımlanmadı $form. Kullanmamanız gerektiği görülüyor $form['group_mygroup'], ama $form['#fieldgroups']['group_mygroup'].


0

Alan kümelerini nasıl gizlediklerini görmek için örnek modüle bakabilirsiniz . Buna dayanarak kodunuzun olması gerektiğini düşünüyorum:

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

2
Önerin için teşekkürler. Bu benim kod ile aynı olmasına rağmen sadece biraz farklı beyan etti. FAPI kullanarak form ve fieldset bildirirsem fieldset'i gizleyebilirim. Benim sorunum hook_form_alter () içinde CCK alan gruplarıyla çalışmıyor olmasıdır.
thepearson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.