CC_ फ़ील्ड को हुक_फॉर्म_लेटर () में #states का उपयोग करके छिपाएं?


9

मेरे पास एक कस्टम मॉड्यूल है, और मैं "#states" का उपयोग करके CCK फ़ील्डग्रुप को छिपाने की कोशिश कर रहा हूं जब एक निश्चित आइटम को ड्रॉप-डाउन चयन सूची में चुना जाता है।

मैंने राज्यों को हुक_फॉर्म_ल्टर () से उपयोग करने की कोशिश की है, जैसे:

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

यह कुछ भी करने के लिए प्रतीत नहीं होता है।

मैंने अपने मॉड्यूल का वजन विभिन्न साइटों जैसे http://proofgroup.com/blog/2008/dec/modifying_cck_fieldgroups_hook_form_alter के अनुसार बदलते हुए देखा है ।

लेकिन फिर भी कोई फायदा नहीं हुआ। मैं राज्यों का उपयोग करके फ़ील्ड समूह के भीतर सभी फ़ॉर्म तत्वों को छिपा सकता हूं, लेकिन फ़ील्ड समूह को ही नहीं। क्या किसी को कोई ख़याल है?


भविष्य के दर्शकों के लिए: @ andriy-malish 'का उत्तर सही है।
अल्ट्राबॉच

जवाबों:


11
/ **
 * इम्प्लीमेंट्स हुक_फ़ील्ड_ग्रुप_बिल्डिंग_पर_रेंडर_अल्टर।
 * /
फ़ंक्शन mymodule_field_group_build_pre_render_alter (& $ तत्व) {
  अगर (isset ($ तत्व ['# form_id'])) {
    अगर ($ तत्व ['# form_id'] == 'mynodetype_node_form') {
      $ तत्व ['group_myfieldgroup'] ['# राज्य'] = सरणी (
        'दृश्यमान' => सरणी (
          ': इनपुट [नाम = "field_myfield [und]"] => सरणी (' जाँच '=> TRUE)
        )
      );
      $ तत्व ['group_myfieldgroup'] ['# id'] = 'group_myfieldgroup';
    }
  }
}

मैं अपने क्षेत्र समूह को छिपाने के लिए इस हुक का उपयोग करता हूं। यह तभी दिखाई देता है जब चेकबॉक्स field_myfieldकी जाँच की जाती है।

$elementइस हुक में चर का पता लगाने के लिए मैंने इस्तेमाल किया

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

के बजाय dpm()

आशा है कि यह मदद की :)


1

फ़ील्डग्रुप को रूट में परिभाषित नहीं किया गया है $form। ऐसा लगता है कि आपको उपयोग नहीं करना चाहिए $form['group_mygroup'], लेकिन $form['#fieldgroups']['group_mygroup']


0

आप उदाहरण मॉड्यूल को देख सकते हैं कि वे फ़ील्ड्स को कैसे छिपाते हैं । उसके आधार पर मुझे लगता है कि आपका कोड होना चाहिए:

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

2
तुम्हारे सुझाव के लिए धन्यवाद। हालाँकि यह वही है क्योंकि मेरा कोड केवल थोड़ा अलग है। यदि मैं FAPI का उपयोग करके फ़ॉर्म और फ़ील्डसेट घोषित करता हूं, तो मैं फ़ील्डसेट छिपा सकता हूं। मेरा मुद्दा यह है कि यह hook_form_alter () के भीतर CCK फ़ील्ड समूहों के साथ काम नहीं करता है।
Thepearson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.