Yii 2 CKeditor 未通过验证
Yii 2 CKeditor not passing through validation
我在我的 Yii 2 高级平台上从 https://github.com/2amigos/yii2-ckeditor-widget 安装了 ckeditor。
安装成功。但是,当我单击提交时,它没有通过验证检查,即使里面有内容也会显示 "Description cannot be blank"。当我第二次点击提交按钮时,数据通过了。
模型中的内部规则此字段是必需的。当我删除 ckeditor 并直接使用
<?php echo $form->field($model, 'MY_DESC'); ?>
第一次提交就通过了。
有好心人帮忙吗?
提前致谢。
发生这种情况是因为此类插件的工作方式。它会生成额外的 HTML 标记,使实际文本区域隐藏并留空。将在提交表格时填写。
您很可能正在使用客户端验证(默认情况下启用)。它显然是在直接检查 textarea 并且不知道实际内容存储在哪里。
要么像这样在你的表单中禁用它:
<?php ActiveForm::begin(['enableClientValidation' => false]); ?>
或者寻找一些与textarea同步的方法。
查看 this question 中的示例,但我不知道它是否适用于您使用 Yii2 扩展的版本。
也许现在有一些更高级的选项,因此您不必自己编写。
您或许可以使用以下解决方案(未经测试):
$('#myform').on('beforeValidate', function (event, messages, deferreds) {
for(var instanceName in CKEDITOR.instances) {
CKEDITOR.instances[instanceName].updateElement();
}
return true;
}
基于 Yii 1 的解决方案:
转换为:https://github.com/yiisoft/yii2/blob/95cdd0905d26bf9e64211238b4a2a698d8d047d2/framework/UPGRADE.md
我在我的 Yii 2 高级平台上从 https://github.com/2amigos/yii2-ckeditor-widget 安装了 ckeditor。
安装成功。但是,当我单击提交时,它没有通过验证检查,即使里面有内容也会显示 "Description cannot be blank"。当我第二次点击提交按钮时,数据通过了。
模型中的内部规则此字段是必需的。当我删除 ckeditor 并直接使用
<?php echo $form->field($model, 'MY_DESC'); ?>
第一次提交就通过了。
有好心人帮忙吗?
提前致谢。
发生这种情况是因为此类插件的工作方式。它会生成额外的 HTML 标记,使实际文本区域隐藏并留空。将在提交表格时填写。
您很可能正在使用客户端验证(默认情况下启用)。它显然是在直接检查 textarea 并且不知道实际内容存储在哪里。
要么像这样在你的表单中禁用它:
<?php ActiveForm::begin(['enableClientValidation' => false]); ?>
或者寻找一些与textarea同步的方法。
查看 this question 中的示例,但我不知道它是否适用于您使用 Yii2 扩展的版本。
也许现在有一些更高级的选项,因此您不必自己编写。
您或许可以使用以下解决方案(未经测试):
$('#myform').on('beforeValidate', function (event, messages, deferreds) {
for(var instanceName in CKEDITOR.instances) {
CKEDITOR.instances[instanceName].updateElement();
}
return true;
}
基于 Yii 1 的解决方案:
转换为:https://github.com/yiisoft/yii2/blob/95cdd0905d26bf9e64211238b4a2a698d8d047d2/framework/UPGRADE.md