行为创建属性的验证规则

时间:2015-03-26 15:23:24

标签: yii2

我有一个带有两个值的模型,它们必须是唯一的。 Yii2有一个验证规则:

[['object_id', 'created_by'], 'unique', 'targetAttribute' => ['object_id', 'created_by']]

created_by属性是以可责备的行为生成的:

public function behaviors()
{
    return [
        'blameable' => [
            'class' => BlameableBehavior::className(),
            'createdByAttribute' => 'created_by',
            'updatedByAttribute' => 'updated_by',
        ],
    ];
}

验证在行为输入存储在模型中之前完成。 (我知道这一点,因为如果规则中需要created_by,模型将不会保存 - 验证错误。)

是否有一种良好的yii2方式来验证这样的行为生成属性?

1 个答案:

答案 0 :(得分:5)

您可以使用'属性'指定要创建属性的事件。行为的属性,所以你可以像这样修改你的控制器;

public function behaviors()
{
    return [
        'blameable' => [
            'class' => BlameableBehavior::className(),
            'createdByAttribute' => 'created_by',
            'updatedByAttribute' => 'updated_by',
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_VALIDATE => ['updated_by', 'created_by']
            ]
        ],
    ];
}