CKEditor + Yii, загруженный AJAX: $ _POST не содержит обновленного значения

вкратце:

  1. Я использую Yii Framework

  2. У меня есть одно окно Ckeditor на моей странице (php / yii framework – отлично работает)

  3. когда я нажимаю кнопку, создается новое окно CKeditor и отображается через вызов AJAX

  4. ПРОБЛЕМА: это новое окно CKEditor правильно отображает текст, хранящийся в базе данных. НО: когда я нажимаю «Сохранить» (кнопка ajax, сгенерированная вместе с остальной частью формы), значения из этого нового окна CKeditor не будут сохраняться: CKeditor отправляет обратно старые значения, полученные из базы данных.

Когда я удаляю Ckeditor и оставляю plain <textarea> : все в порядке, поэтому я знаю, что контроллер в порядке.

Пожалуйста, кто-нибудь прошел через что-то вроде этого?

Related of "CKEditor + Yii, загруженный AJAX: $ _POST не содержит обновленного значения"

Похоже на типичную проблему связывания JAJAJAX. 🙂 Есть несколько возможностей, чтобы исправить это, в зависимости от того, что происходит не так.

Этот пост на форуме Yii должен быть для вас деньгами, именно там я получил большинство этих предложений: http://www.yiiframework.com/forum/index.php?/topic/9341-ckeditor-widget-in-a- виджет CActiveForm /

  1. Используйте виджетное расширение Yii, которое уже решило эту проблему ( NHCKEditor? )
  2. Добавьте обратный вызов onClick к кнопке отправки, которая сохраняет содержимое CKEditor скрытой 'textarea' ('onclick'=>'CKEDITOR.instances.TEXTAREA_ID.updateElement()',
  3. Используйте jQuery для получения данных из CKEditor iFrame для использования … везде. Проверка AJAX и т. Д.

Удачи!

Вы можете позволить CKEDITOR обновить текстовое поле до проверки, а проверка clientide / ajax будет работать, как ожидалось:

 <?php $form = $this->beginWidget('CActiveForm', array( 'enableAjaxValidation' => true, // one or both 'enableClientValidation' => true, // one or both 'clientOptions' => array( 'validateOnSubmit' => true, // optional 'beforeValidate' => new CJavaScriptExpression('function(form) { for(var instanceName in CKEDITOR.instances) { CKEDITOR.instances[instanceName].updateElement(); } return true; }'), ), )); ?>