微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – yii中的日期验证规则

我在验证日期规则方面遇到问题,当我输入无效日期(如’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');
    }
}

然后将自定义验证器分配给rules()数组中的属性

array('fromDate, toDate', 'isValidDate'),

您可以扩展它以确保日期在合理的时间范围内,并且toDate在fromDate等之后.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐