'Text_format' türündeki bir alanı sistem ayarı değişkeni olarak kaydetme


19

İçerik editörlerime özel bir modül için bir değişken değiştirme yeteneği vermeye çalışıyorum. Bu değişken html içerebilir. Onları herhangi bir HTML bilgisine sahip olmasını istemiyorum, bu yüzden onlara emrinde wysiwyg (CKEditor modülü tarafından sağlanan CKEditor) sahip olma yeteneği vermek istiyorum. Ancak, şu andan itibaren veriler değişken olarak kaydedilmemektedir. Ben böyle bir şey yapmak için gerekli birkaç yerde (Do, stackexchange) okudum:

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

Bu, bir system_settings_form ($ form) ile kullanıma hazır olarak çalışmaz. Bir var_dump kaydetme işleminden sonra bunu gösterir:

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

Buradan 'biçim'in doğru kaydedildiğini, ancak' değer'in kaydetmediğini görebilirsiniz. Neyi kaçırıyorum?

Ayrıca, bunu yapmanın daha iyi bir yolu varsa, lütfen söyleyin.

Yanıtlar:


28

Aşağıdakiler benim için çalıştı; #default_value bir dize bekliyor ancak text_format form öğesi bir dizi olarak saklanıyor.

$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,
); 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.