【发布时间】:2018-01-11 18:03:17
【问题描述】:
当我使用场景(在我的示例“更新”场景中)时,如何保护我的属性以进行大规模分配?
这是我的规则:
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() 检查控制器中的安全属性时,我只获得了函数场景() 的“更新”场景所需的属性。
当然,$model->load(Yii::$app->request->post()) 函数不会检索其他属性。
我怎样才能保证它们的安全? 就算想加点别的规则,也找不到路!
【问题讨论】:
-
你是在打电话给
$model->safeAttributes()之前设置场景吗 -
是的,我在 findModel 函数之后定义场景,如下所示:
public function actionUpdate($id){$model = $this->findModel($id);$model->scenario = 'CU';
标签: yii yii2 attributes scenarios