我有一个模型扩展了具有特定规则的AR类。但是现在我需要在这个表中插入行,但是还有其他规则。我是否需要使用新规则创建其他模型,或者可以定义其他规则?
答案 0 :(得分:5)
您可以设置验证方案。例如:
$model = new Post();
$model->scenario = 'new_line';
$model->attributes = $_GET['data'];
if ($model->validate()){
$model->save(false);
}
在您的模型中:
public function rules()
{
return array(
array('username, text', 'required','on' => 'new_line')
);
}
在模型规则中,所有数组行都必须具有键“on”,否则此规则将不适用。
了解更多here。
答案 1 :(得分:1)
如果你正在扩展你的课程(活动记录),那么你实际上可以覆盖你的规则()函数,即:。
class User extends ActiveRecord(){
function rules(){
return array(array(
// Nomrally a rule
))
}
}
然后进入下一堂课:
class User_extended extends ActiveRecord(){
function rules(){
return array(array(
// Nomrally a rule
))
}
}
那应该是它。然后,您可以调用User_extended
类,您的规则将应用于父User
类,因为Yii会在$this
上下文中获取规则,而$this
将是您的子类。
但是你也可以在这里使用场景,但是如果你需要覆盖其他方法,它可能会变脏。
答案 2 :(得分:0)
THX。现在我正在尝试使用这个
/**
* @param string $attribute fields names wich should be validated
* @param array $params additional params for validation
*/
public function ValidatorName($attribute,$params) { … }