当日期验证无效时,不会弹出对话框


The dialog can't pop up when the date validation is invalid

我是一个新的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,
            ),
        ));
        ?>

如果你真的是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。在您的模型

中创建验证规则

然后,您需要创建将比较两个值的验证规则。要做到这一点,你可以使用内置的CCompareValidator通过更改默认操作符为'>',例如。所以在你的模型中你会有这样的东西:

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