Yii 自定义验证程序创建

Yii 自定义验证程序创建,yii,Yii,我是Yii框架的新手,所以请任何人帮我解决这个问题 如何为以下验证创建自定义验证程序类, 我有一个表列表,上面有listname和类型,我的验证器希望检查列表名称对于特定类型是唯一的,例如 listName Type test1 1 test2 1 test3 2 当我插入一个新的列表名验证程序时,我想检索列表名和类型,如果它对于特定类型不是唯一的,则提供错误信息。如果您正在寻找,那么创建自定义验证程序方法非常简单 您需要在模型中的rules()方法中添加一个元素(即p

我是Yii框架的新手,所以请任何人帮我解决这个问题 如何为以下验证创建自定义验证程序类, 我有一个表列表,上面有listname和类型,我的验证器希望检查列表名称对于特定类型是唯一的,例如

listName Type
test1     1
test2     1
test3     2

当我插入一个新的列表名验证程序时,我想检索列表名和类型,如果它对于特定类型不是唯一的,则提供错误信息。

如果您正在寻找,那么创建自定义验证程序方法非常简单

  • 您需要在模型中的rules()方法中添加一个元素(即protected/Model/youTableName.php)

    返回数组(
    数组('listName','uniqueForType','type')
    );

  • 创建一个以验证程序名称命名的youTableName.php方法

    公共函数uniqueForType($field,$params)
    {
    $filedToCompare=$this->$field;
    $fieldtocompare=$this->$params;
    //进行检查和比较
    如果($wehavenerror){
    $this->addError($field,printf(“此列表名已存在于%s类型,$this->$params));
    }
    }


  • 这应该能奏效。得到了那张信息表。你试过什么?2.你试过CUniqueValidator吗?我允许您设置其他db标准。您可以为
    type
    field.array('categoryName','ext.Validators.Validator','criteria'=>array('condition'=>)设置条件‌​appId=“.$this->appId.”),我需要像这样的查询“select*from tableName where appId='SomeValue'”,我需要像这样设置查询,但是pbm是$this->appId总是返回空值,所以错误不是由hanks产生的,我已经在我的模型类中这样做了。但是我想通过将类分离为与/framework/validators/CUniqueValidator类类似的验证器类来重用代码,请帮助我如何做到这一点?我引用了这个链接,但我不明白如何获取值,以及如何将类型列值传递给它。哦,好的,我做了很少的研究,并且有很好的文档。用样品很好地解释了这一点。DonRico,让我告诉一个场景,请告诉我如何使用自定义验证器类处理这种情况,当注册新用户时,我们不允许再次获得相同电子邮件id的用户名。如果我没有弄错,您不允许多次使用同一电子邮件注册。这是非常简单和普遍的规则。您只需为电子邮件字段添加一个“唯一”验证器即可。
    public function rules(){array('email',unique')}
    这就是您所需的全部内容。你也应该考虑在DB表中制作电子邮件字段。