Php Yii2与用户输入的数据在同一页面上重定向

Php Yii2与用户输入的数据在同一页面上重定向,php,redirect,yii2,yii2-advanced-app,Php,Redirect,Yii2,Yii2 Advanced App,我正在使用Yii2高级应用程序。我在弹出式表单上采取了一些措施,如: 当我们点击弹出窗口上的“创建”按钮时,它会创建一些记录并将我们重定向到同一页面,即localhost/abcd/backend/web/index.php?r=xyz/Create。 这是我为此编写的代码- public function actionCreateitem() { $model = new Items(); if ($model->load(Yii::$app->request->p

我正在使用Yii2高级应用程序。我在弹出式表单上采取了一些措施,如:

当我们点击弹出窗口上的“创建”按钮时,它会创建一些记录并将我们重定向到同一页面,即localhost/abcd/backend/web/index.php?r=xyz/Create。 这是我为此编写的代码-

public function actionCreateitem()
{
  $model = new Items();

  if ($model->load(Yii::$app->request->post()) && $model->save()) {
    return $this->redirect(['create', 'id' => $_SESSION['ro_id']]);
  } else {
    return $this->renderAjax('itemform', [
      'model' => $model,
      ]);
  }
}
在这里,我再次重定向了createform/page上的页面。没关系。但当用户填写整个表单时&然后他想“添加项”,他单击“添加”按钮并在弹出窗口中创建它。但在提交弹出表单后,创建页面上所有他最近填写的字段都被清除(因为我们重定向了它)我需要这样一种场景:提交弹出窗口后,页面不应刷新/重定向,它应保持在同一页面上,以便用户输入的数据在页面上保持安全。 因此,在创建一个项目之后,他将得到如下的创建页面- 我是这样做的(欢迎所有新建议)-

添加项目弹出窗口-

我是这样做的(欢迎所有新建议)-

添加项目弹出窗口-


您是否尝试过使用AJAX发送表单?没有,但请告诉我一个场景。如何实现呢?你可以使用jQuery来实现这一点。网络上有很多例子,所以实现它应该不会有任何问题。好的,谢谢。我会参考它。创建项目后是否需要刷新下拉列表?是否尝试使用AJAX发送表单?否,但请告诉我一个场景。如何实现呢?你可以使用jQuery来实现这一点。网络上有很多例子,所以实现它应该不会有任何问题。好的,谢谢。我会参考它。创建项目后是否需要刷新下拉列表?
<?php
$this->registerJs("$('#createitem').click(function() {
    var itemName = $('#items-item_name').val();
    var sku = $('#compitems-sku').val();
    var itemDesc = $('#items-item_description').val();
    $('#modalItem .close').click();
    $.get('?r=xyz/createitem&itemName='+itemName+'&sku='+sku+'&itemDesc='+itemDesc, function(success){
        $('.refreshitem').html(success);
    });
});");
?>
<div class="items-form">

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

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

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

    <?= $form->field($model, 'item_description')->textArea(['rows' => 5]) ?>

    <div class="form-group"><p align="right">
        <button id="createitem" type="button" class="btn btn-success">Create</button></p>
    </div>

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

</div>
<?= $form->field($model, "[{$i}]item_id")->dropDownList(ArrayHelper::map(Items::find()->where(['deleted' => 'N'])->all(),'id','item_name'),['prompt'=>'Select Item', 'class' => 'form-control refreshitem']) ?>
<button id="modalButtonItem" class="btn btn-default" type="button" value="?r=xyz/createitem&itemName=0&sku=0&itemDesc=0" onclick="itemModal(1);">+</button>
public function actionCreateitem($itemName, $sku, $itemDesc)
{
  $model = new Items();
  $modelCI = new CompItems();
  if ($itemName != '0' && $sku != '0' && $itemDesc != '0') {
    $itemExist = Items::find()->select('id')->where(['item_name' => $itemName])->one();
    if(count($itemExist) == 0) {
      $model->item_name = isset($itemName) ? $itemName : 'NULL';
      $model->item_description = !empty($itemDesc) ? $itemDesc : $itemName;
      $model->save();
    }

    $items = Items::find()->where(['deleted' => 'N'])->all();
    foreach ($items as $item) {
      echo '<option value="'.$item->id.'">'.$item->item_name.'</option>';
    }
  } else {
    return $this->renderAjax('itemform', [
      'model' => $model, 'modelCI' => $modelCI
      ]);
  }
}