Yii2:检测 Pjax 表单提交与手动提交

Yii2: Detect Pjax form submit vs manual submit

我有一个创建项目的视图。在视图中,我在 Pjax 中有一个 ActiveForm 此表单是一个图像上传输入,在更改后我使用 javascript 提交表单:

$('#itemForm').submit();

我的目的是想把图片上传到一个临时文件夹中,然后在页面上显示出来,这样在保存项目之前可以对它们进行排序。

我遇到的问题是区分 javascript 提交和用户使用提交按钮提交表单的时间。

我试过给提交按钮添加一个名字:

Html::submitButton('Save Item', ['class' => 'btn btn-success', 'name' => 'submitButton'])

但是不管我是通过javascript提交还是通过按钮提交,$_POST包含submitButton,所以我不知道什么时候上传图片以及什么时候上传项目正在保存。

好吧,如果你想通过 javascript 检测提交,你应该声明一个默认值为 0 的隐藏字段。

Html::hiddenInput('is_js_submit',0,['id'=>'is_js_submit']);

然后在您调用

$('#itemForm').submit();

要在上传图片时提交表格,请添加声明

$("#is_js_submit").val(1)

现在您可以检查 controller/action 中的值是 javascript 提交还是普通表单提交。

希望对您有所帮助。