บันทึกฟิลด์ประเภท 'text_format' เป็นตัวแปรการตั้งค่าระบบ


19

ฉันพยายามให้ความสามารถในการแก้ไขตัวแปรสำหรับโมดูลที่กำหนดเอง ตัวแปรนี้สามารถมี html ฉันไม่ต้องการให้พวกเขามีความรู้เกี่ยวกับ HTML ดังนั้นฉันจึงต้องการให้พวกเขามีความสามารถในการมี wysiwyg ของเรา (CKEditor ที่จัดทำโดยโมดูล CKEditor) ในการกำจัดของพวกเขา อย่างไรก็ตาม ณ ตอนนี้ข้อมูลไม่ได้ถูกบันทึกเป็นตัวแปร ฉันได้อ่านไม่กี่ที่ (ทำ, 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 ($ 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,
); 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.