सिस्टम सेटिंग चर के रूप में 'text_format' प्रकार के क्षेत्र को सहेजना


19

मैं अपने सामग्री संपादकों को एक कस्टम मॉड्यूल के लिए एक चर को बदलने की क्षमता देने का प्रयास कर रहा हूं। इस चर में html हो सकता है। मुझे उन्हें HTML के किसी भी ज्ञान की आवश्यकता नहीं है, इसलिए मैं उन्हें उनके निपटान में हमारे wysiwyg (CKEditor मॉड्यूल द्वारा प्रदान किए गए CKEditor) प्रदान करने की क्षमता देना चाहता हूं। हालाँकि, अब तक, डेटा एक चर के रूप में सहेजता नहीं है। मैंने कुछ स्थानों पर पढ़ा है (Do, stackexchange) जिसे मुझे कुछ इस तरह से करने की आवश्यकता है:

  $form['foo']['bar'] = array(
    '#type'     => 'text_format',
    '#title'    => 'Bar',
    '#definition' => 'Foo Bar',
    '#default_value' => variable_get('bar', ''),
    '#weight'   => 1,
    '#format' => 'filtered_html',
    '#required' => FALSE,
  ); 

यह एक system_settings_form ($ फॉर्म) के साथ आउट-ऑफ-द-बॉक्स काम नहीं करता है। एक var_dump इसे सहेजने के बाद दिखाता है:

array (size=7)
  '#type' => string 'text_format' (length=11)
  '#title' => string 'Bar' (length=7)
  '#definition' => string 'Foo Bar' (length=74)
  '#default_value' => 
    array (size=2)
      'value' => string '' (length=0)
      'format' => string 'filtered_html' (length=9)
  '#weight' => int 1
  '#format' => string 'filtered_html' (length=9)
  '#required' => boolean false

इससे, आप देख सकते हैं कि 'प्रारूप' सही ढंग से सहेजता है, लेकिन 'मूल्य' नहीं है। मुझे किसकी याद आ रही है?

इसके अलावा, अगर ऐसा करने का कोई बेहतर तरीका है, तो कृपया बताएं।

जवाबों:


28

निम्नलिखित ने मेरे लिए काम किया; #default_value एक स्ट्रिंग की उम्मीद कर रहा है लेकिन text_format फॉर्म एलिमेंट को एक सरणी के रूप में संग्रहीत किया जाता है।

$barvalue = variable_get('bar', array('value' => '', 'format' => NULL));

$form['foo']['bar'] = array(
'#type'     => 'text_format',
'#title'    => 'Bar',
'#definition' => 'Foo Bar',
'#default_value' => $barvalue['value'],
'#weight'   => 1,
'#format' => $barvalue['format'],
'#required' => FALSE,
); 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.