1

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

4

3 回答 3

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”,否则此规则将不适用。

在这里阅读更多。

于 2012-12-24T09:31:48.440 回答
1

如果您正在扩展您的课程(活动记录),那么您实际上可以覆盖您的 rules() 函数,即:

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并将成为您的子类。

但是你也可以在这里使用场景,但它可能会变脏,特别是如果你需要覆盖其他方法。

于 2012-12-24T09:35:02.047 回答
0

谢谢。现在我正在尝试使用它

/**
 * @param string $attribute fields names wich should be validated
 * @param array $params additional params for validation
 */
public function ValidatorName($attribute,$params) { … }
于 2012-12-24T09:43:22.113 回答