如何在模型中使用Yii Framework添加规则?

时间:2013-03-20 05:41:51

标签: php yii yii-validation

在Web应用程序中,我需要在创建对象时在模型中添加一些规则。 但是当我向模型添加我的规则时,有一些错误。 例如,在汇总表单时手机号码用户输入。

在视图页面中,有些输入需要用户完成,然后我想添加一些规则来验证用户输入以防止使用输入一些无效值。这意味着使用我自己的验证功能。

您使用Yii Framework,我需要您的帮助,谢谢。

2 个答案:

答案 0 :(得分:4)

编辑:在验证规则中使用自己的功能 - 在规则中指定具有如下属性的函数 -

array('username','checkuniquename'),

然后在同一模型中定义函数逻辑,如下所示:

public function checkuniqueemail($attribute)
{
    $record=Users::model()->findByAttributes(array($attribute=>$this->email));
    if($record!==null)
         $this->addError($attribute, 'This email has been already taken please choose a different one');

}

您可以在Yii模型中为单个属性定义多个验证规则。

return array(
                    array('contact_no','numerical', 'integerOnly'=>true),
                    array('contact_no','length', 'min'=>8 ),
                    array('name, contact_no', 'required'),
        array('name, contact_no', 'length', 'max'=>255),
        array('password','pattern'=>'/^[A-Za-z0-9_!@#$%^&*()+=?.,]+$/u', 'message'=>'Spaces or given characters are not allowed'),
    );

您可以在模型中指定大量验证。

答案 1 :(得分:0)

首先,您需要在模型中指定验证规则,例如

return array(
.......    
array('duration', 'days_available'),
.....

);

其中duration是字段名称,days_available是函数名称。然后你需要在模型中编写函数。

public function days_available($attribute,$params)
{
  //provide proper condition
  $this->addError('duration','validation message');
}