Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2 行为创建属性的验证规则_Yii2 - Fatal编程技术网

Yii2 行为创建属性的验证规则

Yii2 行为创建属性的验证规则,yii2,Yii2,我有一个具有两个值的模型,这两个值必须是唯一的。 Yii2对此有一个验证规则: [['object_id', 'created_by'], 'unique', 'targetAttribute' => ['object_id', 'created_by']] 由创建的属性是以可指责的行为生成的: public function behaviors() { return [ 'blameable' => [ 'class' =>

我有一个具有两个值的模型,这两个值必须是唯一的。 Yii2对此有一个验证规则:

[['object_id', 'created_by'], 'unique', 'targetAttribute' => ['object_id', 'created_by']]
由创建的
属性是以可指责的行为生成的:

public function behaviors()
{
    return [
        'blameable' => [
            'class' => BlameableBehavior::className(),
            'createdByAttribute' => 'created_by',
            'updatedByAttribute' => 'updated_by',
        ],
    ];
}
验证在行为输入存储到模型中之前完成。(我知道这一点,因为如果规则中需要由
创建的
,那么模型将不会保存-验证错误。)


是否有一种很好的Yi2方法来验证这样的行为生成属性?

您可以使用行为的“attributes”属性指定将在其上创建属性的事件,这样您就可以像这样修改模型:

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

“不能是必需的”是指无法访问这些值?当然组件::_get($name)在行为中查找属性。我希望它应该是可访问的。你能提供一些代码(特别是验证规则)吗?我的意思是“不能是必需的”。如果你在规则中要求它,我不会保存。因此,在将行为输入添加到模型之前进行验证。