'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 ($ 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.