先上代码
class User extends CActiveRecord
{
public function rules()
{
return array(
array('username, email', 'required'),
array('password, confirm_password', 'required', 'on'=>'create'),
array('username', 'unique'),
array('username, email', 'length', 'max'=>50),
array('password, confirm_password', 'length', 'min'=>6, 'max'=>32),
array('email', 'email'),
array('confirm_password', 'compare', 'compareAttribute'=>'password', 'on'=>'create,update'),
array('id, username, password, email', 'safe', 'on'=>'search'),
);
}
}
该方法是在模型(activeRecord、FormModel)中重写了CModel的rules方法, 其中on对应的值就是场景,如果on
选项未设置,则此规则会应用于所有场景。
也就是说该rules有3个场景:create, update,
search。
定义好场景后我们可以在控制器的action中调用刚才定义好的场景
public function actionAdmin()
{
$model=new User('create');
}
当我们调用CModel::validate() 或者CModel::save()的时, 系统就会验证email的格式是否正确,
confirm_password、password的值是否为空以及他们是否相等, 以及其他的验证
如果此文中有不对或不足的地方, 请大家多多指教