我有一个更新表单,它包含此代码 查看
<?= $form->field($model, 'type')->dropDownList([
'0' => 'Individual',
'1' => 'Entity',
]) ?>
动作
public function actionUpdate()
{
$id = Yii::$app->user->id;
$model = Page::find()->where(['user_id'=>$id])->one();
if (!Yii::$app->user->can('UpdateOwnPage',['page'=>$model]))
{
throw new ForbiddenHttpException("You have no access to this page.");
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect('page/'.$model->url);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
但是我的数据库表中的值仍为0,它根本没有变化。有什么问题?
答案 0 :(得分:1)
可能是您的验证规则不受尊重只是为了测试尝试使用$ model-&gt;保存(false)如果值保存 然后更好地检查验证
if ($model->load(Yii::$app->request->post()) {
$model->save(false)) ;
return $this->redirect('page/'.$model->url);
} else {
return $this->render('update', [
'model' => $model,
]);
}
你可以通过这种方式获得validatio错误,例如:
if ($model->validate()) {
// all inputs are valid
} else {
// validation failed: $errors is an array containing error messages
$errors = $model->errors;
var_dump($errors);
}
答案 1 :(得分:1)
这不是很好的安全实践,但你可以添加你的模型:
public function rules()
{
$rules = [];
$rules[] = [ $this->attributes(), 'safe' ];
$rules[] = [ $this->attributes(), 'trim' ];
return $rules;
}