我想为小数范围值创建规则40.000< = score_percentage< = 100.000
array('entrance_score', 'compare','operator'=>'<=','compareValue'=>100, 'message'=>'Maximum Entrance Score should be 100.' ),
从GUI进行测试时,可接受小于100的十进制数,但不能接受大于或等于40.000。
以下规则无法正常运作,我该怎么办?
array('entrance_score', 'compare','operator'=>'>=','compareValue'=>0 , 'message'=>'Minimum Entrance Score should be 40.' ),
答案 0 :(得分:1)
因此,您要进行检查,以便entrance_score
值介于40.000
和100.000
之间,对吗?
您可以在模型中放置min
,max
规则,例如:
array('entrance_score', 'numerical', 'integerOnly'=>false, 'min'=>40, 'max'=>100),
或者,您可以创建自己的自定义验证规则,例如:
public function rules()
{
return array(
//............
array('entrance_score', 'numerical', 'integerOnly'=>false),
array('entrance_score', 'authenticate'),
//.....
);
}
和您的authenticate
功能:
public function authenticate($attribute,$params)
{
if($this->entrance_score < 40) {
$this->addError('entrance_score','Minimum Entrance Score should be 40.');
} elseif($this->entrance_score > 100) {
$this->addError('entrance_score','Maximum Entrance Score should be 100.');
}
}
应该这样做。