2013-03-27 66 views
0

我是一位新的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

如果你是真正的新警予,你必須學會​​一堆東西:

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' => '>'), 
    ); 
} 
+0

如果我想用CJuiDialog做我想做的事,我該怎麼辦呢?謝謝你的答覆,對於我的英語不好,感到抱歉。 – 2013-03-28 01:20:41