0

「body」タグ内にリンクのあるページがあります。
リンクが挿入されると、fancybox で次のビューがレンダリングされます。

<div class="form">
    <?php
                $model = new User;
        $model->scenario='registration';
        $form=$this->beginWidget('CActiveForm', array(
        'id'=>'signup-form',
                'action'=>'/signup/',
        'enableClientValidation'=>true,
        'clientOptions'=>array(
            'validateOnSubmit'=>true,
        ),
    )); ?>

        <p class="note">Fields with <span class="required">*</span> are required.</p>

        <div class="row">
            <?php echo $form->labelEx($model,'username'); ?>
            <?php echo $form->textField($model,'username'); ?>
            <?php echo $form->error($model,'username'); ?>
        </div>

        <div class="row">
            <?php echo $form->labelEx($model,'password'); ?>
            <?php echo $form->passwordField($model,'password'); ?>
            <?php echo $form->error($model,'password'); ?>
        </div>


        <div class="row buttons">
            <?php echo CHtml::submitButton('sign up',array('name'=>'submit')); ?>
        </div>

    <?php $this->endWidget(); ?>
    </div><!-- form -->

ファンシーボックスを使用せずに上記のコードを挿入すると、クライアント検証スクリプトが正しく挿入されますが、ファンシーボックスを使用すると、jQuery 検証関数がページに挿入されません。
何が問題になる可能性がありますか?
(siteController コードは意図的にここに挿入されます)

4

2 に答える 2

1

問題は、HTML を Fancybox に送信する方法である可能性が最も高いです。renderPartial を実行する場合 (user1248203 がほのめかしたように)、返されたビューを renderPartial 後処理する必要があります (後処理には、ビュー自体と共にレンダリングする javascript/css ファイルが含まれます)。

CController ページの詳細情報

注意すべきもう 1 つの点: 後処理を行うときは、Fancybox (および場合によっては jQuery など) の Javascript が再度送信されないようにする必要があります。それは、いくつかの本当に紛らわしい問題を引き起こす可能性があります。ファイルが Ajax 経由で再送信されないようにするには、次のようにします。

Yii::app()->clientScript->scriptMap['jquery.js'] = false;
Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;
Yii::app()->clientscript->scriptMap['jquery-ui.min.js'] = false;
etc.

また、jquery.js は開発サーバー (YII_DEBUG が true に設定されている) でデバッグしているときに送信されますが、jquery.min.js は実動サーバー (YII_DEBUG が false に設定されている) で送信されることに注意してください。それは私を噛んだ:-) Framework/web/js/packages.phpで定義されているのを見ることができます

于 2012-04-11T23:29:57.503 に答える
0

コードは Ajax 呼び出し (renderPartial) から呼び出されたものですか、それとも直接呼び出されたものですか? Ajax 呼び出し (renderPartial)には JavaScript 検証機能が含まれ、ページ全体のみが含まれます。

于 2012-04-11T15:11:32.333 に答える