在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,
]);
}
}
答案 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。