日期验证无效时,无法弹出对话框

时间:2013-03-27 03:44:16

标签: php ajax validation yii

我是新的Yii用户,当我想建立一个网站时,我遇到了问题。 我的网站有一个部分需要用户输入开始日期和结束日期,我想有一个功能,如果结束日期设置在开始日期之前,它会显示一个对话框自动警告用户,但我不能那样做。有任何想法吗?

以下是我的两个日期文本字段的代码:

<td>Start
    <?php 

            $this->widget('zii.widgets.jui.CJuiDatePicker', array(
            'name'=>'COURSE_START_DATE',
            'model'=>$Cmodel,
            'attribute'=>'COURSE_START_DATE',
            'language'=>Yii::app()->language=='en_us',

            'options'=>array(
                'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold'
                'showOn'=>'button', // 'focus', 'button', 'both'
                'buttonText'=>Yii::t('ui','Calendar'),
                'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.png',
                'buttonImageOnly'=>true,
            ),
    )
        ?></td>

     <td>End 
    <?php 
        $this->widget('zii.widgets.jui.CJuiDatePicker', array(
            'name'=>'COURSE_END_DATE',
            'model'=>$Cmodel,
            'attribute'=>'COURSE_END_DATE',
            'language'=>Yii::app()->language=='en_us',
            'options'=>array(
                'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold'
                'showOn'=>'button', // 'focus', 'button', 'both'
                'buttonText'=>Yii::t('ui','Calendar'),
                'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.png',
                'buttonImageOnly'=>true,

            ),
        ));

        ?>

1 个答案:

答案 0 :(得分:1)

如果你真的是yii的新手,你将不得不学习一堆东西:

<强> 1。如何在yii中执行ajax和客户端验证:

在表单中,您需要指明可能会执行ajax和客户端验证。这是一个例子:

<?php $form=$this->beginWidget('CActiveForm', array(
  'id'=>'contacts-form',
  'enableAjaxValidation'=>true, // this turns on AJAX validation
  'enableClientValidation'=>true, // this turns on Client validation
)); ?>

<强> 2。在控制器中启用ajax验证

例如在你的控制器动作调用中:

$this->performAjaxValidation($model);

使用:

protected function performAjaxValidation($model)
{
    if(isset($_POST['ajax']) && $_POST['ajax']==='contacts-form') {
    echo CActiveForm::validate($model);
    Yii::app()->end();
    }
}

第3。在模型中创建验证规则

然后你需要创建一个验证规则来比较你的两个值。为此,您可以通过将默认运算符更改为“&gt;”来使用CCompareValidator中的内置版本。例如。 所以在你的模型中你会有类似的东西:

public function rules()
{
    return array(
        //your other rules
        array('COURSE_END_DATE', 'compare', 'compareAttribute'=>'COURSE_START_DATE', 'operator' => '>'),
    );
}