我是新的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,
),
));
?>
答案 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' => '>'),
);
}