在Yii2中转换CKEditor中的Textarea

时间:2017-02-26 10:16:28

标签: javascript jquery yii2 ckeditor

我试图将我已创建动态的textarea转换为Yii2中的 CKEditor 。我使用 2amigos 中的 yii2-ckeditor-widget

以下是我如何以表格形式生成Textarea:

$form->field($model, 'answer')
     ->textarea(['rows' => 5, 'id' => 'textarea_answer'])
     ->label(false) 

生成的textarea是:

<textarea id="textarea_answer" class="form-control" name="topic[answer]" rows="5">
  <p>test</p>
</textarea>

然后当我在div中动态添加Textarea时,它可以工作。但在此之后我尝试将Textarea转换为CKEditor:

CKEDITOR.replace('textarea_answer');

 $( '#textarea_answer' ).ckeditor();

textarea获取Style属性 visibility:hidden 并消失。如下所示:

<textarea id="textarea_answer" class="form-control" name="topic[answer]" 
          rows="5" style="visibility: hidden;">

          <p>test</p>

</textarea>

我在控制台中收到以下错误:

Uncaught TypeError: Cannot read property 'registered' of undefined

the console

我该如何解决?这可能是依赖问题吗?

1 个答案:

答案 0 :(得分:0)

对不起。我发现了问题,我动态创建视图的方式不是好方法。我使用 renderPartial 而不是 renderAjax

所以我只是直接动态渲染CKEditor。

视图(_view):

<?= $form->field($model, 'answer')
         ->widget(CKEditor::className(), 
            [
                    'options' => ['rows' => 5, 'id' => 'textarea_answer'],
                    'preset' => 'custom',
                    'clientOptions' => [
                        'extraPlugins' => 'codesnippet',
                        'toolbarGroups' => [
                            ['name' => 'undo'],
                            ['name' => 'basicstyles', 'groups' => ['basicstyles', 'cleanup']],
                            ['name' => 'colors'],
                            ['name' => 'links', 'groups' => ['links', 'insert']],
                            ['name' => 'others', 'groups' => ['others', 'about']],

                            ['name' => 'codesnippet']
                        ]
                    ]
            ])->label(false); 
?>

以及我在Controller中呈现它的方式:

echo $this->renderAjax( '_view', ['model'=> $model] );

我正在使用renderPartial。这就是为什么它不起作用。