1

我目前正在为 Drupal 8 开发一个自定义模块。在添加后端表单以从用户那里获取一些数据时,我试图将 ckeditor 配置为替换我的 textareas ......但失败了 >.<

这是表单定义:

    $form['text'] = array(
        '#type' => 'textarea',
        '#title' => t('Text'),
        '#required' => TRUE,
        '#attributes' => array(
            'id' => 'text',
            'style' => 'max-width: 650px'
        ),
        '#default_value' => $data['text']
    );

我需要在哪里加载ckeditor来替换我的textarea?

我已经尝试过的事情:

$build['#attached'] = array(
        'js' => array(
          drupal_get_path('module', 'ckeditor') . '/js/ckeditor.js'
drupal_render($build);

drupal_load_library("ckeditor", "ckeditor");

但我无法加载所有依赖项

4

2 回答 2

2

请参阅具有text_format表单类型的 Drupal 8 表单 API。还建议检查您的#default_value 。

导航到配置 > 内容创作 > 文本格式和编辑器,为您提供当前可用文本格式的概览。此处列出的可以在表单字段的#format 属性中使用。(当前的默认回退是basic_html

尝试将您的代码更改为:

$form['text'] = array(
    '#type' => 'text_format',
    '#title' => t('Text'),
    '#required' => TRUE,
    '#default_value' => isset($data['text']) ? $data['text'] : '',
    '#format' => 'full_html',
);
于 2014-12-31T12:26:13.570 回答
0

我遇到了类似的问题,但是在使用上述解决方案保存数据时遇到了问题。最后它看起来像这样:

$form['body'] = [
      '#type' => 'text_format',
      '#title' => $this->t('Body'),
      '#description' => $this->t('Message'),
      '#default_value' => $config->get('body'),
      '#format' => 'full_html',
    ];

在 submitForm 方法中我像这样保存配置

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    parent::submitForm($form, $form_state);

    $this->config('my_module.default')
      ->set('body', $form_state->getValue('body')['value'])
      ->save();
  }

请注意对附加的 ['value'] 数组的引用。

于 2021-10-12T14:17:34.577 回答