2012-04-22 52 views
0

我在Yii中创建注册系统,我希望人们无法注册用户名,如管理员,管理员,超级用户,主持人......那么你能告诉我如何做到这一点吗?如果在表单验证中有一些机会将这些无效名称列入数组,那将会更好。Yii定义无效字符串

那么,有什么帮助吗?

回答

3

您可以为注册表单创建自定义验证器。要做到这一点最简单的方法是你的模型像这里面:

public function rules() { 
    return array(
     array('username', 'my_validation_rule'), 
    ); 
} 

public function my_validation_rule($attribute) { 
    $restricted_usernames = array('admin', 'root', 'superuser'); 
    if(in_array($this->$attribute, $restricted_usernames)) 
     $this->addError($attribute, 'This username is restricted!'); 
} 
+3

有一个内置的方式做到这一点,使用['CRangeValidator'](http://www.yiiframework.com/doc/api/ 1.1/CRangeValidator)。对它的规则如下所示:'array('username','in','range'=> array('admin','root','superuser'))''。 (虽然你的解决方案更好,因为它可以平凡地扩展以处理区分大小写,但CRangeValidator不能)。 – DCoder 2012-04-22 13:06:13