Bynd
Bynd

Reputation: 705

Yii2 Basic Clear input form after submit button

I created a modal to create post and another one to create gallery inside another view and it work perfect but after I click submit my form keeps the data entered even if I refresh the page it's still have the data entered, is it possible to clear form after submit

My view code of post is :

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $ly_addPost app\models\Posts */
/* @var $form yii\widgets\ActiveForm */
?>

<div class="posts-form">

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

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

    <?= $form->field($ly_addPost, 'Post_text')->textarea(['rows' => 6]) ?>

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

    <?= $form->field($ly_addPost, 'Permission_id')->dropdownList([$ly_addPost->Permission_id]);?>

    <div class="form-group">
        <?= Html::submitButton('Create' , ['class' => 'btn btn-primary']) ?>
    </div>

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

</div>

My controller has two create from from two different view one for post and another one for gallery

my controller code is :

public function actionView($id)
    {

        $ly_addPost = new Posts();
        $ly_addGallery = new Galleries();
        //$ly_addAudio = new Audios();
        //$ly_addVideo = new Videos();

        $ly_addPost->Channel_id = $id;
        $ly_addGallery->Channel_id = $id;

        $ly_addPost->Userid = Yii::$app->user->id;
        $ly_addGallery->Userid = Yii::$app->user->id;

        // for permission post
        $ly_addPost->Permission_id = Permission::find()
        ->select(['Permission_type'])
        ->indexBy('Permission_id')
        ->column();

        // for permission galery
        $ly_addGallery->Permission_id = Permission::find()
        ->select(['Permission_type'])
        ->indexBy('Permission_id')
        ->column();

        if ($ly_addPost->load(Yii::$app->request->post()) ) {   

            $ly_addPost->Post_id = Yii::$app->params['ly_randCttid'];
            $ly_addPost->Post_uid = Yii::$app->params['ly_randCttid'];

            $ly_addPost->save();    

            return $this->render('view', [
                'model' => $this->findModel($id),
                'ly_addPost' => $ly_addPost,
                'ly_addGallery' => $ly_addGallery,
            ]);

            exit();
        }
        else if ($ly_addGallery->load(Yii::$app->request->post()) ) {   

            $ly_addGallery_id = Yii::$app->params['ly_randCttid'];
            $ly_addGallery_uid = Yii::$app->params['ly_randCttid'];

            $ly_addGallery->save(); 

            return $this->render('view', [
                'model' => $this->findModel($id),
                'ly_addPost' => $ly_addPost,
                'ly_addGallery' => $ly_addGallery,
            ]);

            exit();
        } else {
        return $this->render('view', [
            'model' => $this->findModel($id),
            'ly_addPost' => $ly_addPost,
            'ly_addGallery' => $ly_addGallery,
        ]);
        }   
    }

Upvotes: 1

Views: 2907

Answers (2)

Bynd
Bynd

Reputation: 705

I fixed by changing

return $this->render('view', [
                'model' => $this->findModel($id),
                'ly_addPost' => $ly_addPost,
                'ly_addGallery' => $ly_addGallery,
            ]);

            exit();

To

return $this->refresh();

Now my code in controller is

if ($ly_addPost->load(Yii::$app->request->post()) ) {   

            $ly_addPost->Post_id = Yii::$app->params['ly_randCttid'];
            $ly_addPost->Post_uid = Yii::$app->params['ly_randCttid'];

            $ly_addPost->save();    

            return $this->refresh();
        }

Upvotes: 0

kiamoz
kiamoz

Reputation: 714

you have to clear $ly_addPost before rendering

} else {


    foreach ($ly_addPost as $key => $value) {
        $ly_addPost->$key = null;  //set to null instead of unsetting
    } // this foreach clear all variable of   $ly_addPost;

        return $this->render('view', [
            'model' => $this->findModel($id),
            'ly_addPost' => $ly_addPost,
            'ly_addGallery' => $ly_addGallery,
        ]);
}   

Upvotes: 1

Related Questions