0

フレームワークのドキュメントと yii フォーラムを調べましたが、これについては何も見つからないようです。UActiveForm ウィジェットに ajax オプションを追加しようとしています。別の言い方をすれば、この ajax フォームの送信ボタンがクリックされたときに、ロード中の gif を div に挿入したいと考えています。生のjavascript/jquery/phpでこれを行う方法は知っていますが、このフレームワークではこれを行うことができないようです。これが私のbeginウィジェットコードです:

<?php $form=$this->beginWidget('UActiveForm', array(
    'id'=>'login-form',
    'enableAjaxValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
        'validateOnChange'=>false,
        'validateOnType'=>false,
    ),
    'htmlOptions' => array(
        'enctype'=>'multipart/form-data','class'=>'white-popup-block'),
    ),
)); ?>

<!--form labels/inputs here-->

<?php $this->endWidget(); ?>

以下は、フレームワークなしで ajax コードを実行した場合の ajax コードの一部です。

request = $.ajax({
    url: "usersystem/login.php",
    type: "POST",
    data: serializedData,
    beforeSend: function() {
        $('#loader').show();
        $('button').off(); //unbind all buttons
    },
    complete: function(){
        $('#loader').hide();
    },
    success: function(data) {
        $('#test').append(data);
    }
});

私が特に欲しいのは beforeSend と完全な ajax オプションです。単純に追加してみました

'ajax'=> array(
    'beforeSend'=> 'function() {
        alert("testing, ready");
    }',
    'complete'=> 'function(){
        alert("testing,done");
    }',
),

UActiveForm ウィジェットのオプションに追加しましたが、機能しません。このフレームワークを理解するための助けをいただければ幸いです。

4

1 に答える 1

2

が何であるかはわかりませんが、の一部として使用できるオプションがいくつかあるとUActiveForm仮定します。CActiveFormbeforeValidateafterValidateclientOptions

'clientOptions'=>array(
    'beforeValidate' => new CJavaScriptExpression('function() { ... })'),
    'afterValidate' => new CJavaScriptExpression('function() { ... })'),
    'validateOnSubmit'=>true,
    'validateOnChange'=>false,
    'validateOnType'=>false,
),

関数コードを a 内にラップする必要があります。CJavaScriptExpressionそうしないと、Yii はそれを文字列として扱いますjson_encode

于 2013-08-12T22:52:55.047 に答える