Yii中相同AR模型的不同规则

时间:2012-12-24 09:24:26

标签: php mongodb activerecord yii yii-validation

我有一个模型扩展了具有特定规则的AR类。但是现在我需要在这个表中插入行,但是还有其他规则。我是否需要使用新规则创建其他模型,或者可以定义其他规则?

3 个答案:

答案 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) { … }