2017-01-19 11 views
0

idというレコードを使用してstatus = 1と設定します。しかし、これは動作しません。シングルフィールドwhith送信idを更新するには

インデックスページからIDを送信します(下の画像)。

public function actionConfirm($id) { 
     $model = $this->findModel($id); 

     $model->status = 1; 
     if ($model->save()) { 
      return $this->render('index'); 
     } else { 
      die('not work'); //this clause works 
     } 
    } 

enter image description here

は、どのように私はこれを行うことができます。

+0

AJAXを使用して更新要求を送信し、実行して結果をこのビューに戻します。 – Bizley

+0

私はアヤックスについてよく分かりません。どうすればいいですか? –

+0

実際には、ウェブ上にたくさんの例がありますが、Googleにはそれだけです。 – Bizley

答えて

1

あなたの検証にはいくつか問題があります。原因は2

  1. $model = $this->findModel($id)することができ

  2. はどういうわけか、あなたのDBのレコードに保存不完全であり、内に保存することができませんidで、あなたが探しているレコードを見つけることができませんdb。

ソリューション:

まず、あなたは更新をやっているので、私はあなたが$model->update()method

しかし、両方の場合に使用することをお勧め(更新を()または(保存))あなたがしたい場合はあなたがfalseに$ runValidationパラメータアクション]列に、ボタンがあなたのアクション列Yでチェック 命名されたと仮定すると、

public function actionConfirm($id) { 
     $model = $this->findModel($id); 

     $model->status = 1; 
     if ($model->update(false)) { 
      return $this->render('index'); // now this works 
     } else { 
      die('not work'); 
     } 
    } 
1

を渡す必要があるフィールドの更新を強制ouが呼び出す可能性があります

 ['class' => 'yii\grid\ActionColumn', 
      'template' => '{delete}{update}{viwq}{check}',    
      'buttons' => [ 
       'check' => function ($url, $model) { 
        return Html::a('<span class="glyphicon glyphicon-check"></span>', $url, [ 
        'title' => Yii::t('yii', 'Confirm'), 
        ]); 
       } 
      ], 
      'urlCreator' => function ($action, $model, $key, $index) { 
       if ($action === 'check') { 
        $url = Url::to(['/your-controller/confirm', 'id' =>$model->id]); 
       return $url; 
       } 
      } 
     ]    
    ], 
関連する問題