我在验证日期规则方面遇到问题,当我输入无效日期(如’xxxx’)时,我没有运行验证程序,但它运行其他带有必需验证程序的字段.
表格
?PHP $form=$this->beginWidget('CActiveForm', array(
'id'=>'post-form',
'enableAjaxValidation'=>false,
'enableClientValidation'=>true,
)); ?>
….
<div class="row">
<?PHP echo $form->labelEx($model,'fromDate'); ?>
<?PHP echo $form->textField($model,'fromDate'); ?>
<?PHP echo $form->error($model,'fromDate'); ?>
</div>
<div class="row">
<?PHP echo $form->labelEx($model,'toDate'); ?>
<?PHP echo $form->textField($model,'toDate'); ?>
<?PHP echo $form->error($model,'toDate'); ?>
</div>
后模型中的规则
public function rules()
{
return array(
array('fromDate, toDate', 'date', 'format'=>'dd-mm-yyyy H:m:s', 'allowEmpty'=>false),
array('subject', 'required'),
);
...
}
预先感谢您的帮助
解决方法:
我没有发现Yii的CDateValidator特别灵活,我通常会沿着创建自定义验证规则的路线前进:
将此添加到您的模型:
public function isValidDate($attribute, $params)
{
if(!strtotime($this->$attribute))
{
$this->addError($attribute, $attribute . ' was not a valid date');
}
}
array('fromDate, toDate', 'isValidDate'),
您可以扩展它以确保日期在合理的时间范围内,并且toDate在fromDate等之后.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。