Збереження поля типу "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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.