我正在尝试使用通过CKeditor
请求嵌入的AJAX
小部件添加from。请求本身工作正常,并返回我想要的一般局部视图。除Ckeditor
窗口小部件外,将返回普通文本框。
当项目被添加到组并重新加载页面时,将呈现相同的partialView(在foreach中包含所有group-items),这次CKeditor
很好地到位。
发布我的控制器,初始化下面的CKeditor
和Scipt with AJAX
请求。 (CKeditor
视图中包含_ContentItemHtml
我查看了this,但我无法调用CKeditor
中的任何JS
函数,因为它是作为窗口小部件加载的。
控制器操作
public function actionCreateHtml($contentitemgroupid)
{
$model = new ContentItemHtml();
if (isset(Yii::$app->request->post()['ContentItemHtml'])) {
$item = Yii::$app->request->post()['ContentItemHtml'];
$model->contentitemgroupid = $contentitemgroupid;
$model->title = $item['title'];
$model->body = $item['body'];
$model->save();
// return $this->redirect(['edit', 'id' => $model->contentitemgroupid]);
}
else
return $this->renderPartial('_ContentItemHtml', ['model' => $model]);
}
视图中的有效表单:
echo $form->field($model, 'body')->widget(CKEditor::className(), [
'preset' => 'custom',
'clientOptions' => [
'height' => 200,
'toolbarGroups' => [
['name' => 'basicstyles', 'groups' => ['basicstyles', 'cleanup']],
['name' => 'paragraph', 'groups' => ['templates', 'list']],
['name' => 'mode']]
]])->label(false);
的script.js
$('#addNewContentItem').on('click', function (e) {
e.preventDefault();
var url = 'create-' + $('#itemSelector').val().toLowerCase() + '?contentitemgroupid=' + $('#itemSelector').attr('contentitemgroupid');
$.ajax({
type: 'POST',
url: url,
cache: false,
success: function(res) {
$('.contentItemsManager').append('<div class="ContentItemContainer row">' + res + '</div>');
AddSaveEventListener();
AddSaveMediafileEventListener();
AddRemoveEventListener();
}
});
});
答案 0 :(得分:4)
使用renderAjax
代替renderPartial
。来自文档:
[renderAjax]呈现视图以响应AJAX请求。
此方法类似于renderPartial(),除了它将使用JS / CSS脚本和向视图注册的文件注入到渲染结果中。因此,您应该使用此方法而不是renderPartial()来呈现视图以响应AJAX请求。