2016-06-24 3 views
1

yii2を使用するためにデータベースにデータを挿入しようとしています。 うまくいっていますが、少しずつ問題があります。 挿入するとデータベースに入り、フィールドは空になります。 しかし、リフレッシュすると、データベースに再び戻されます。 いつでもリフレッシュすると、同じデータがデータベースに再度追加され、その理由がわかりません。yii2に正しく挿入するには?

これはあなたのコードの問題のようにあります私の見解クラスcompose.php

<?php $form = ActiveForm::begin(); ?> 
<input type="name" class="form-control" required="true" name="Topic[topic]" id="topic" placeholder="topic"> 
<textarea type="name" cols="30" rows="10" class="form-control" required="true" name="Topic[about]" id="" placeholder="about"></textarea> 
<input type="name" class="form-control" required="true" name="Topic[category]" id="category" placeholder="category"> 

<?= Html::submitButton('Save', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> 
<?php ActiveForm::end(); ?> 
+0

Plsはあなたのトピックモデル –

+0

に検証ルールを提供し、あなたがしますprint_r($ topic->エラー)を行うことができますリターンを追加するために必要な、それを修正。 $ topic-> save()の後に。何が印刷されているか教えてください –

答えて

1

ある

public function actionCompose() { 

     $topic = new Topic(); 
     $topic->load($_POST); 
     $topic->save(); 

     return $this->render('compose'); 
    } 

私のコントローラクラスである:まだ提供生じた場合

public function actionCompose() 
{ 
    $topic= new Topic(); 
    //assuming post() request 
    if($topic->load(Yii::$app->request->post()) && $topic->validate()){ 
    //save() must be after validate() 
    $topic->save(); 
    } 

    return $this->render('compose'); 
} 

投稿モデルの検証ルール

1

投稿する前にあなたのモデルをチェックしておくべきだと思います。

public function actionCompose() { 
    $topic = new Topic(); 
    if($topic->load(Yii::$app->request->post())) { 
     $topic->save(); 
    } 

    return $this->render('compose'); 
} 
1

あなたはPOSTまたは通常のリクエストであることを確認していません。

public function actionCompose() 
{ 
    $topic= new Topic(); 

    // POST request 
    if ($topic->load(Yii::$app->request->post())) 
    { 
     $topic->load($_POST); 
     $topic->save(); 

     return $this->redirect(['index']); // change name as yours 
    } 
    else // Not a form submission 
    { 
     return $this->render('compose', [ 
      'model' => $topic, // change name as yours 
      ]); 
    } 
} 
0

私はreturn $this->refresh();

public function actionCompose() 
    { 
    $topic= new Topic(); 

     if ($topic->load(Yii::$app->request->post()) && $topic->validate()) { 
      $topic->load($_POST); 
     $topic->save(); 
     return $this->refresh(); 
      } 
      return $this->render('compose'); 
    } 
関連する問題