Yii2 - 在场景中设置安全属性

时间:2018-01-11 18:03:17

标签: yii yii2 attributes scenarios

当我使用场景时(在我的示例'更新'场景中)如何保护我的属性以进行大量作业?

这是我的规则:

public function rules()
{
    return [
        [['user_id', 'type', 'name', 'status'], 'required'],
        [['country_id', 'address', 'name', 'status'], 'safe', 'on' => 'update'],
    ];
}

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['update'] = ['user_id', 'type', 'name'];
    return $scenarios;
}

当我使用$ model-> safeAttributes()检查控制器中的安全属性时,我只获得了更新所需的属性&#39 ;功能场景()场景。

当然,$ model->加载(Yii :: $ app-> request-> post())函数不会检索其他属性。

我怎样才能安全? 即使我想添加一些其他规则,我也找不到方法!

2 个答案:

答案 0 :(得分:0)

在加载模型之前设置方案:

$model->setScenario('update');
$model->load(Yii::$app->request->post())

答案 1 :(得分:0)

您需要在场景中添加所有内容

$scenarios['update'] = ['user_id', 'type', 'name', 'country_id', 'address', 'name', 'status'];