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

короче:

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

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

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

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

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

Пожалуйста, кто-нибудь проходил что-то подобное?

Ответы [ 2 ]

2 голосов
/ 05 марта 2015

Вы можете позволить CKEDITOR обновить текстовую область перед проверкой, и проверка на стороне клиента / 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;
        }'),
    ),
)); ?>
2 голосов
/ 27 мая 2011

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

Это сообщение на форуме 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 и т. Д.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...