如果把这个验证器放进普通的FormModel里面去验证字段的话,就会出错。
查看了下代码,它会调用isNewRecord这样的字段或者tablename()这个方法,My god,怎么就默认把要验证的model当成是ActiveRecord了呢?
希望能尽快修正。
如果把这个验证器放进普通的FormModel里面去验证字段的话,就会出错。
查看了下代码,它会调用isNewRecord这样的字段或者tablename()这个方法,My god,怎么就默认把要验证的model当成是ActiveRecord了呢?
希望能尽快修正。
这个不算BUG吧.
你拿 CUniqueValidator 是做什么的?
怎么能不算Bug呢?
比如说:
class TestForm extends CFormModel {
public $product_id;
public $title;
public function rules() {
return array(
array('title', 'unique', 'className' => 'Film', 'attributeName' => 'title'), // 我要验证title在Film中是不存在的。
array('product_id', 'safe'),
);
}
}
像上面这样,要验证form里面某个字段是在一个ActiveRecord中是不存在的,那么这样设定是正确的。可是,运行不正常,抛错,因为CFormModel不是ActiveRecord。
要知道,并不是所有的数据输出都是简单的ActiveRecord的CRUD,更多的是一些接收各种杂合数据,所以Yii 1.1这样的设计是错误的。
呵呵,估计在这里没几个会去用form,所以没有发现这个问题的。
已经改正了。谢谢。最早的版本因为只考虑在自身表里验证,所以必须要求是AR。后来我们增强了这个功能,使得能在另一个表里验证。
我谢你才对,说真的,Yii真的好用,你的工作给我们带来了相当有用的东西。
我也一直在向我所认识的人推荐yii,希望它能得到更多人的使用和认同。