0

yiiでアプリを作成しましたが、Fancy-boxにビューフォームを読み込む必要があります。
私はそれをしましたが、私の問題は、送信ボタンをクリックすると、フォームを検証せずにフォームがコントローラーアクションにリダイレクトすることです。

Fancy-box内でリダイレクトせずにフォームを検証するにはどうすればよいですか?

私の見解:

<?php
    $config = array( 
);

$this->widget('application.extensions.fancybox.EFancyBox', array(
'target'=>'#getaction',
'config'=>$config,));

echo CHtml::link('Add Section',array('section/create'),array('id'=>'getaction'));
?>

FormView_fromfrom別のビューからの呼び出し

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'section-form',
    'enableAjaxValidation'=>true,
)); ?>

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

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>255)); ?>
        <?php echo $form->error($model,'name'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>

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

</div><!-- form -->

コントローラー:

public function actionCreate()
{
    $model=new Section;       

    if(isset($_POST['Section']))
    {
        $model->attributes=$_POST['Section'];
        if($model->validate())
        //// Do Som code here 
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}
4

2 に答える 2

2

この問題はYiiフォーラムの私の仲間のseenivasanによって修正されたので、ここでコードを共有します

_form.php

<?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'section-form',
        'enableAjaxValidation'=>true,
        //'enableClientValidation'=>true,
        'clientOptions'=>array('validateOnSubmit'=>true), //This is very important
)); ?>

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

        <?php echo $form->errorSummary($model); ?>

        <div class="row">
                <?php echo $form->labelEx($model,'name'); ?>
                <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>64)); ?>
                <?php echo $form->error($model,'name'); ?>
        </div>

        <div class="row buttons">
                <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
        </div>

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

コントローラー内

public function actionCreate()
        {
                $model=new Section;

                // Uncomment the following line if AJAX validation is needed
                 $this->performAjaxValidation($model);//You have enabled ajax validation. You have to uncomment this line.

                if(isset($_POST['Section']))
                {
                        $model->attributes=$_POST['Section'];
                        if($model->save())
                                $this->redirect(array('view','id'=>$model->id));
                }

                if(Yii::app()->request->getIsAjaxRequest())
          echo $this->renderPartial('_form',array('model'=>$model),true,true);//This will bring out the view along with its script.

                else $this->render('create',array(
                        'model'=>$model,
                ));
        }

参照リンク:

Yiiフォーラム

ファンシーボックス

于 2012-12-22T19:40:24.717 に答える
0

'enableClientValidation'=>true,の中に配列を追加するだけbeginwidgetです。

于 2012-12-22T11:19:08.063 に答える