Сохранение поля типа «text_format» в качестве переменной настройки системы

Я пытаюсь предоставить редакторам контента возможность изменять переменную для настраиваемого модуля. Эта переменная может иметь html. Я не хочу требовать от них знания HTML, поэтому я хочу дать им возможность использовать наш wysiwyg (CKEditor, предоставленный модулем CKEditor). Однако на данный момент данные не сохраняются как переменные. Я читал в нескольких местах (D.o, 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

Из этого вы можете видеть, что «формат» сохраняется правильно, но «значение» - нет. Что мне не хватает?

Кроме того, если есть лучший способ сделать это, пожалуйста, сообщите.

19 голосов | спросил mrryanjohnston 6 J0000006Europe/Moscow 2012, 05:07:20

1 ответ


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,
); 
ответил Timothy Zura 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 12 Sep 2012 21:35:29 +0400 2012, 21:35:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132