2017-03-20 2 views
1

を選択し、HTMLで更新していない私は、更新フォームを持っており、それがこのコード ビューYii2:値を変更する際にDBのレコードが

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

のためのより良いチェックあなたはvalidatioを得ることができますエラーこの方法例:

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 - 返事を受け入れる – scaisEdge

1

それはとても良いセキュリティプラクティスではありませんが、あなたはあなたのモデルに追加することができます。

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

    return $rules; 
} 
関連する問題