2016-10-25 15 views
1

フォームの値に基づいてレコードの1つのフィールドを更新しようとしました。フォームは、ビューファイル内のモーダル内に配置されます。Yii2は、ビューファイルのフォームに基づいてレコードを更新します

ビュー

Modal::begin([ 
'header' => '<h3>Update Payment Reference</h3>', 
'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'], 
]); ?> 

<?php $form = ActiveForm::begin(); ?> 

    <?= $form->field($model, 'pcpayreference')->textInput(['maxlength' => true]) ?> 

    <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?> 

<?php ActiveForm::end(); ?> 
<?php Modal::end(); 

しかし、私はそれは、ユーザが入力を持っており、提出どんな更新できるように、私のコントローラにそれらの値を渡す方法は考えています。

コントローラ

public function actionPay($id) 
{ 
    $model = Purchase::findOne($id); 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 

     $model->pcstatus = 'Paid'; 
     $model->pcpaydate = date('Y-m-d H:i:s'); 
     $model->save(); 

    return $this->redirect(['view', 'id' => $model->pcid]); 
    } 
} 

私はYiiのフレームワークに新たなんです。どんな助けも大歓迎です。私がやりたい

EDIT

唯一のものは、データベースにのみ、このフィールド(現在のレコード/ビュー)を更新する代わりに、フィールド全体を更新することです。

public function beforeAction($action) { 
$this->enableCsrfValidation = false; 
return parent::beforeAction($action); 
} 

私にしてみましょう

は自分のコントローラにこの機能を置く:

enter image description here

+0

それはあなたのフォームが送信されますと、あなたがポストにすべてのデータを得たことを意味します/のYii :: $ APP->要求 - >ポストに動作します()、それをダンプすることができます。そうでなければ、これは定義されています。 – Jigar7521

+0

私は何かが私のアクティブなフォームにないと思う、私は悪い要求(#400)を持っています 必要なパラメータがありません:フォームを送信するときにID。 – Etic

+0

私の答えをチェックし、下の2番目の解決策を試してください、私に教えてください。 – Jigar7521

答えて

0

あなたはidを持つフォームでアクションを設定する必要があり、それは

Modal::begin([ 
    'header' => '<h3>Update Payment Reference</h3>', 
    'toggleButton' => ['label' => 'Pay','class' => 'btn btn-success'], 
    ]); ?> 

     <?php $form = ActiveForm::begin([ 
        'action' => ['controller/pay','id'=>$id], 
    ]); ?> 

<?= $form->field($model, 'pcpayreference')->textInput(['maxlength' => true]) ?> 

    <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?> 

<?php ActiveForm::end(); ?> 
<?php Modal::end(); 
+0

私はそれを試してみました。しかし、奇妙なことに私は提出後に空白の画面を持っています。 – Etic

+0

ポストアレイ –

+0

で何を得ているのかデバッグしようとしています。私はいくつかの時間を試していたので、前に機能しなかった部分がわからない。しかし、 'アクション' => ['購入/支払'、$モデル - > pcid]を実装した後、それは動作しています。 Tq – Etic

0

私は、これは、ちょうどenableCsrfValidationについてのあなたの設定で確認してくださいCSRFの検証に関する問題だと思いますお願いします。

+0

私は自分の行動の前に関数を置く。まだ動作していません。 – Etic

+0

これは試しましたか?あなたが#400エラーを得る前に言ったように – Jigar7521

+0

だから、これはその解決策です。 – Jigar7521

関連する問題