如何从不同的控制器获取ID Yii2?

时间:2017-03-13 04:50:34

标签: php ajax yii2

**Here is the block diagram for question**

在ActiveForm中我有模型按钮,带有Pjax渲染字段后,将创建模态按钮。添加了一个示例图片。如何获取新创建的id(不选择添加到数据库,需要获取来自此表单的id)。

我想我需要设置get to按钮,而不是使用ajax捕获它并转移到我的Pjax渲染单元格

我尝试过变体,但没有成功,我无法完全理解如何实现它。任何人都可以帮忙解决这个问题吗?

//TwoController
public function actionCreate()
{
    $model = new Formtwo();

    if ($model->load(Yii::$app->request->post())) {
        if ($model->save()) {
            echo 1;
        //maybe here I must to do query ?
        } else {
            echo 0;
        }
    } else {
        return $this->renderAjax('create', [
            'model' => $model,
        ]);
    }
}

索引GridView **Index GridView**

2 个答案:

答案 0 :(得分:0)

    //TwoController
public function actionCreate()
{
    $model = new Formtwo();

    if ($model->load(Yii::$app->request->post())) {
        if ($model->save()) {
            echo $model->id;
        //maybe here I must to do query ?
        } else {
            echo 0;
        }
    } else {
        return $this->renderAjax('create', [
            'model' => $model,
        ]);
    }
}

您不需要查询。只需使用$ model-> id。它在save()之后有价值。

<强>更新

你在哪个控制器中并不重要。您将获得save()之后保存的模型的ID。然后你可以使用id属性。因此,您可以使用ajax加载打开模式窗体。在form2上,您将脚本注册到ajax post表单。像这样:

$("#form :submit").click(function (e) {
            e.preventDefault();
            $.ajax({
                method: "POST",
                url: $("#form").attr("action"),
                data: $("#form").serialize(), 
                success: function (response) {
                    $("#modalid").modal("hide")
                    $.pjax.reload({
                        container: "#grid"
                    });
                   $('#Form2_id').val(response); //here you get the id
                },
            })
            return false;
      });

答案 1 :(得分:0)

我希望我理解正确;您希望当用户创建Form2的实例时,然后传输它以创建Form1的实例,并将Form2的新创建的记录的ID放在Form1 _form中。 如果我没有正确理解,请更好地解释:)

在TwoController创建动作中,创建后,您将调用OneContrller的创建动作:

if ($model->save()) {
return \Yii::$app->runAction('/controller/action-name', ['form2_id'=>$model->id]);

}

On OneController actionCreate使用默认值添加参数:

public function actionCreate($form2_id=null) {

并确保将其传递给视图(不要忘记确保将它传递给create.php以及_form。