我在模态上有一个表单,其中包含2个提交类型的按钮。因此,根据单击的按钮,将访问服务中的相同功能,但具有不同的参数。我想要做的是在点击任何按钮时保持模态打开。
public function createFormExport(Request $request) {
$form = $this->createFormBuilder()
//...
->add('btn1', SubmitType::class, array(
'label' => 'Button 1'
))
->add('btn2', SubmitType::class, array(
'label' => 'Button 2'
))
->getForm();
$form->handleRequest($request);
if ($form->get('btn1')->isClicked()) {
$this
->getService()
->function($form->getData(), "bt1");
} elseif ($form->get('btn2')->isClicked()) {
$this
->getService()
->function($form->getData(), "btn2");
}
return $form->createView();
}
我在服务中的函数中获取数据没有问题,但我想在单击任何按钮时阻止页面重新加载。
如果对于我使用ButtonType
而不是SubmitType
的按钮,则无法识别函数isClicked()
。
如果我使用ButtonType
,是否可以验证单击了哪个按钮,因为如果我使用SubmitType
,我将不得不检测JS中的按钮单击以防止页面重新加载然后生成在AJAX中路由并读取表单中的数据并将其发送回我的控制器。这真的很复杂。
答案 0 :(得分:0)
也许这会有所帮助
//Controller
//return of your method called by the route
(...)
return new JsonResponse(['someData' => '123456789']);
Jquery:
$("#btn1, #btn2").click(function () {
var url = "";
var formSerialize = $("#formAjax").serialize();
// #formAjax is the id of your <form>
$.post(url, formSerialize, function(response) {
$('.anyClass').html(response.someData);
}, 'JSON')
.fail(function(xhr, status, error) {
//do something
});