Lưu trường loại 'text_format' làm biến cài đặt hệ thống


19

Tôi đang cố gắng cung cấp cho các biên tập viên nội dung của mình khả năng thay đổi một biến cho một mô-đun tùy chỉnh. Biến này có thể có html. Tôi không muốn yêu cầu họ có bất kỳ kiến ​​thức nào về HTML, vì vậy tôi muốn cung cấp cho họ khả năng có wysiwyg của chúng tôi (CKEditor do mô-đun CKEditor cung cấp) theo ý của họ. Tuy nhiên, như bây giờ, dữ liệu không lưu dưới dạng một biến. Tôi đã đọc ở một vài nơi (Do, stackexchange) rằng tôi cần phải làm một cái gì đó như thế này:

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

Điều này không hoạt động ngoài luồng với system_sinstall_form ($ form). Một var_dump hiển thị điều này sau khi lưu:

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

Từ đó, bạn có thể thấy rằng 'định dạng' lưu chính xác, nhưng 'giá trị' thì không. Tôi đang thiếu gì?

Ngoài ra, nếu có một cách tốt hơn để làm điều này, xin vui lòng cho biết.

Câu trả lời:


28

Sau đây làm việc cho tôi; #default_value đang mong đợi một chuỗi nhưng phần tử biểu mẫu text_format được lưu trữ dưới dạng một mảng.

$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,
); 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.