2017-02-26 3 views
1

ich ohne Erfolg versuchen, eine Textbereich zu konvertieren, die i dynamisch in CKEditor in Yii2 erstellt habe. Ich verwende das yii2-ckeditor-Widget von 2amigos.Konvertieren eine Textarea in CKEditor in Yii2

Hier ist, wie ich das Textfeld in einer Form erzeugen:

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

Die erzeugte Textbox:

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

Dann, wenn ich das Textfeld dynamisch in einem div hinzufügen, es funktioniert. Aber direkt nach, dass ich versuchen, die Textarea zu CKEditor mit konvertieren:

CKEDITOR.replace('textarea_answer'); 

oder

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

Der Textbereich erhalten die Style-Eigenschaft Sichtbarkeit: versteckt und verschwinden. Wie unten:

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

      <p>test</p> 

</textarea> 

und ich erhalte den folgenden Fehler in der Konsole:

Uncaught TypeError: Cannot read property 'registered' of undefined 

the console

Wie kann ich das lösen? Kann es sich um ein Abhängigkeitsproblem handeln?

Antwort

0

Entschuldigung. Ich habe das Problem gefunden, die Art, wie ich die Ansicht dynamisch erstellt habe, war nicht der gute Weg. Ich benutzte renderPartial anstelle von renderAjax.

Also ich render nur dynamisch CKEditor direkt.

Die Aussicht (_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); 
?> 

und die Art, wie ich es im Controller machen:

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

I renderPartial wurde mit. deshalb funktionierte es nicht.

Verwandte Themen