我有一个带有模态窗口的表单,您可以在其中提交要输入到表单中的额外数据。模态有自己的“提交”按钮,与主窗体上的提交按钮分开。
问题是,当我点击模态上的提交按钮时,它会返回上一页。数据仍然会被提交,但由于用户现在位于错误的页面上,因此用量不大。
我尝试在按钮中指定'url'选项:
Html::submitButton('Submit', ['class' => 'btn btn-primary','url' => myUrl]);
但由于某种原因,这阻止了主表单的提交,即提交按钮不起作用。这两个联系不知何故?我是否需要将模态提交按钮指向特定的Url?理想情况下,我只是希望它在关闭模态后留在页面上。
编辑:
模态通过JavaScript加载:
.find("#clientModalContent")
.load($(this).attr('value'));
然后我有一个单独的php文件,其中包含模态的实际内容,即一些字段和提交按钮。这由我的Controller中的动作呈现,我使用'renderAjax'方法:
return $this->renderAjax('modalcreateclient', [
'model' => $model
]);
当用户点击一个按钮(Html :: button)时,实际上会调用模态,其中js可以选择加载它的id。
答案 0 :(得分:0)
我认为你有两个按钮提交但只有一个ActiveForm,然后是两个动作提交的单个目的地。 但是你需要有两个独立的ActiveForm,每个都有一个唯一的提交。
要做到这一点,你必须指定一个正确的ActiveForm也模式,你在其中提交第二个并分配给这个ActiveForm方法和你关心的动作,如
<php $form = ActiveForm::begin([
'method' => 'posts',
'action' => ['yourController/youAction'],
.......
]); ?>
<?= $form->field($model, 'surname')->textInput(['maxlength' => 64]) ?>
<?= $form->field($model, 'name')->textInput(['maxlength' => 32]) ?>
<?= $form->field($model, 'zipcode')->textInput(['maxlength' => 4]) ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'save'), ['class' => 'btn btn-primary' ]) ?>
</div>
<?php ActiveForm::end(); ?>