2017-03-20 23 views
1

我有一個更新的形式,它包含這些代碼 查看Yii2:在DB的記錄沒有更新時,在HTML中改變值選擇

<?= $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, 
     ]); 
    } 
} 

但是我的DB表中的值仍然是0,它根本沒有改變。什麼問題?

+0

這只是一個表單域...顯示提交的代碼和保存的操作.. – scaisEdge

+0

我的錯,我忘了它。 – yutsura

+0

你能顯示你的頁面模型嗎?驗證規則,您是否也保存方法成功? –

回答

1

可能是您的驗證規則不被尊重的只是測試嘗試使用$模型 - >保存(假)如果該值被保存 然後檢查驗證

if ($model->load(Yii::$app->request->post()) { 
     $model->save(false)) ; 
     return $this->redirect('page/'.$model->url); 


    } else { 
     return $this->render('update', [ 
      'model' => $model, 
     ]); 
    } 

你可以更好的得到驗證準則錯誤這種方式如:

if ($model->validate()) { 
    // all inputs are valid 
} else { 
    // validation failed: $errors is an array containing error messages 
    $errors = $model->errors; 
    var_dump($errors); 
} 
+0

你是對的。對不起,我是Yii的新手。我應該如何驗證它? – yutsura

+0

答案更新..否則..檢查模型 – scaisEdge

+0

@yutsura單個規則如果我的答案是正確的,請將其標記爲已接受...看到這裏如何 http://meta.stackexchange.com/questions/5234/how -does接受-的回答工作 – scaisEdge

1

這不是那麼良好的安全習慣,但你可以在模型中添加:

public function rules() 
{ 
    $rules = []; 
    $rules[] = [ $this->attributes(), 'safe' ]; 
    $rules[] = [ $this->attributes(), 'trim' ]; 

    return $rules; 
} 
相關問題