2011-05-26 10 views
3

含まれていません:

  • 私は私のページに1つのCKEditorバージョンのウィンドウを持っている私はYiiのフレームワークを使用してい

    1. を( PHP/Yiiのフレームワークは、 - )正常に動作

    2. 私はボタンを押して、新しいCKEditorバージョンのウィンドウが生成され、AJAX呼び出し

    3. PROBLEMを通じて示されています:この新しいCKEditorウィンドウは、データベースに保存されたテキストを正しく表示しますが、「保存」(フォームの残りの部分とともに生成されたajaxボタン)を押すと、この新しいCKeditorウィンドウの値は保存されません:CKeditorは古い値データベースから取得したものです。

    私はCKEditorバージョンを削除して、プレーン<textarea>を残す:すべてはので、私は、コントローラは大丈夫であることを知ってokです。

    誰もがこのようなことを行ったのですか?

  • 答えて

    1

    一般的なポストAJAX JSのバインディングの問題のような音がします。 :)何が起こっているかによって、それを修正する方法はいくつかあります。

    私はこれらの提案のほとんどを持ってどこ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. Use jQuery to get the data from the CKEditor iFrame ...どこでも使用できます。 AJAX検証など

    幸運!

    +0

    ありがとうございます!問題は2つの場所にあります:ajaxSubmitButtonとtextareaの名前:すべてのckeditorインスタンスが同じモデルを使用していたが異なる行を使用していたため、すべて同じ名前だったので、ajaxSubmitButtonと同じです。 私は 'onclick'イベントを使用して、ckeditorウィンドウの内容をテキストエリアに手動でコピーし、繰り返しインスタンスごとに追加の名前を導入しました:D ajaxの読み込みを取りやめることを決めました。今すぐ別々のJuiTabsにレンダリングされました –

    +0

    Yii :: app() - > clientscript-> registerScript( 'duppa'、$ thisLanguageID、 " function beforeCommentValidate"。$ thisLanguageID " ){ var t = CKEDITOR.instances ['".CHtml :: activeName($ model、' description_translation ')。" ["" $ thisLanguageID。 "]']。getData(); $( 'textarea [ CHtml :: activeName($ model、 'description_translation')。 "[" "$ thisLanguageID。"] \ "] ' ).val(t); trueを返します。 } $( '#closeTlumaczenieDialog'$ thisLanguageID。 "();}); ")をクリックします。 –

    +0

    あなたはそれがうまくいってうれしい! – thaddeusmt

    1

    あなたは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; 
         }'), 
        ), 
    )); ?> 
    
    関連する問題