Sử dụng Session chuyển Form trong Yii Framework

Thực hiện chuyển Form Confirm bằng Session.

Ở Form Index nhập giá trị của Form và truyền các giá trị nhập được từ Form index sang Fom Confirm
Ở Form Confirm, ta lấy ra các giá trị đã nhập vào từ Form index.
Và lưu lại trong cơ sở dữ liệu.

public function actionIndex()
    {
        $value1 = MekExchange::find()->select(['name', 'value'])->where(['id' => '1'])->one();
        $value2 = MekExchange::find()->select(['name', 'value'])->where(['id' => '2'])->one();
        $data = new MekVoucher();
        $session = Yii::$app->session;
        if ( !$session->isActive) { $session->open(); }

        $model = new MekVoucherForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            $post = Yii::$app->request->post()['MekVoucherForm'];

            $session['data1'] = $post['voucher_value'];
            $session['data2'] = $post['address_wallet'];
            $session['data3'] = $post['name'];
            $session['data4'] = $post['email'];
            $session['data5'] =  $post['phone'];


            $this->redirect('confirm');
            
        }
        return $this->render('index', [
                'model' => $model,
                'value1'=>$value1,
                'value2'=>$value2,
            ]);
        
    }

    public function actionConfirm()
    {   
        $session = Yii::$app->session;
        $id=Yii::$app->session->getId();
        
        //echo $session['va'];
        $data1 = $session['data1'];
        $data2 = $session['data2'];
        $data3 = $session['data3'];
        $data4 = $session['data4'];
        $data5 = $session['data5'];

        $data = new MekVoucher();

        $model = new MekVoucherConfirm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            $update = Yii::$app->request->post()['MekVoucherConfirm'];
            $dataform = $update['txhash'];
            $aaa = MekVoucher::find()->select('txhash')->where(['txhash' => $dataform])->all();
            if ($aaa) {
                echo '<script type="text/javascript">alert("Mã TxHash của bạn nhập đã tồn tại trên hệ thống! Vui lòng nhập mã TxHash mới");</script>';
            } else {
                $data->voucher_value = $data1;
                $data->address_wallet = $data2;
                $data->name = $data3;
                $data->email = $data4;
                $data->phone = $data5;
                $data->txhash = $dataform;
                $data->created_at = date("Y-m-d H:i:s", time());
                $data->created_by = $data3;
                $data->save();
                $this->redirect('thankyou');
            }
        }
        if ($id) {
            return $this->render('confirm',['id'=>$id, 'model' => $model,'data1'=>$data1,'data2'=>$data2]);
        } else {
            return $this->redirect('/');
        }
        $session->close();
        $session->destroy();
    }

Tại Form index:

<form action="" method="POST">
                    <input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
                    <div class="change_voucher">

                      
                        <div ng-app="">
                            <div class="d-inline mek_coin">
                                <div class="form-group">
                                    <?=
                                    Html::activeTextInput($model, 'voucher_value', [
                                        'required' => '',
                                        'step' => 'any',
                                        'class' => 'form-control',
                                        'id' => 'voucher_value',
                                        'placeholder' => 'Số MEK Coin',
                                        'ng-model' => 'value',
                                        'ng-change' => 'cal()',
                                        'ng-model' => 'mekcoin',
                                        'min' => '1',
                                        'max'=>'10',
                                        'type'=>'number',
                                        'oninvalid'=>'this.setCustomValidity("Nhập số MekCoin trong khoảng 1 MekCoin đến 10 MekCoin")',
                                        'oninput'=>'this.setCustomValidity("")'
                                    ])
                                    ?>
                                </div>
                            </div>

                            <div class="d-inline mek_tran">
                                <img src="img/tranfer.png" alt="">
                            </div>

                            <div id="demo" class="d-inline mek_vouc form-control">
                                {{mekcoin*<?php echo $values2; ?>*<?php echo $values1; ?> | number:0}}
                                <p class="price_vn">Vnđ</p>

                            </div>
                        </div>
                    </div>
                    <div class="mek_detail">TỶ GIÁ: 1 MEK Coin = $<?php echo $values2; ?> <span>$1.00 = <?php echo number_format($values1,0,",",","); ?> VNĐ</span></div>
                    <!-- Form info -->
                    <div class="form-group">
                        <?=
                            Html::activeTextInput($model, 'address_wallet', [
                                'required' => '',
                                'step' => 'any',
                                'class' => 'form-control',
                                'id' => 'mek_address',
                                'type'=>'text',
                                'placeholder' => 'Địa chỉ ví MEK chứa MEK Coin của bạn',
                                'oninvalid'=>'this.setCustomValidity("Nhập địa chỉ ví Mek của bạn!")',
                                'oninput'=>'this.setCustomValidity("")'
                            ])
                        ?>
                    </div>
                    <div class="form-group">
                        <?=
                            Html::activeTextInput($model, 'name', [
                                'required' => '',
                                'step' => 'any',
                                'class' => 'form-control',
                                'id' => 'name',
                                'type'=>'text',
                                'placeholder' => 'Họ và tên',
                                'oninvalid'=>'this.setCustomValidity("Nhập Họ và tên của bạn!")',
                                'oninput'=>'this.setCustomValidity("")'
                            ])
                        ?>
                    </div>
                    <div class="form-group">
                        <?=
                            Html::activeTextInput($model, 'email', [
                                'required' => '',
                                'step' => 'any',
                                'class' => 'form-control',
                                'id' => 'email',
                                'type'=>'email',
                                'placeholder' => 'Email để nhận mã VOUCHER',
                                'oninvalid'=>'this.setCustomValidity("Nhập Email của bạn để nhận mã Voucher!")',
                                'oninput'=>'this.setCustomValidity("")'
                            ])
                        ?>
                    </div>
                    <div class="form-group">
                        <?=
                            Html::activeTextInput($model, 'phone', [
                                'required' => '',
                                'step' => 'any',
                                'class' => 'form-control',
                                'id' => 'phone',
                                'type'=>'number',
                                'placeholder' => 'Số điện thoại liên lạc',
                                'oninvalid'=>'this.setCustomValidity("Nhập Số điện thoại của bạn!")',
                                'oninput'=>'this.setCustomValidity("")'
                            ])
                        ?>
                    </div>
                    <div class="mek_submit">
                        <div class="checkbox">
                            <label><input type="checkbox" required> Tôi đã đọc các <a href="#">Quy định</a><br>& chấp nhận các <a href="#">Điều khoản</a></label>
                        </div>
                        <?= Html::submitButton('Xác nhận', ['id'=>'submit','class' => 'button block btn btn-default']) ?>
                    </div>
                </form>

Tại form Confirm

<div class="confirm_form">
                <form class="go-right go_left" method="POST">
                    <input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
                    <div class="form-group">
                        <?=
                            Html::activeTextInput($model, 'txhash', [
                                'required' => '',
                                'step' => 'any',
                                'class' => 'form-control',
                                'id' => 'name',
                                'type'=>'text',
                                'placeholder' => 'Nhập mã giao dịch chuyển MEK thành công',
                            ])
                        ?>
                        <label for="name">Txhash</label>
                    </div>
                    <?= Html::submitButton('Xác nhận', ['class' => 'button block btn btn-default']) ?>
                </form>
            </div>

 

Good Job

Leave a comment

Your email address will not be published. Required fields are marked *