Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony isClicked()用于ButtonType符号_Symfony - Fatal编程技术网

Symfony isClicked()用于ButtonType符号

Symfony isClicked()用于ButtonType符号,symfony,Symfony,我在模态上有一个表单,有两个类型为submit的按钮。因此,根据单击的按钮,将使用不同的参数访问服务中的相同功能。我想做的是在单击任何按钮时保持模式打开 public function createFormExport(Request $request) { $form = $this->createFormBuilder() //... ->add('btn1', SubmitType::class, array( '

我在模态上有一个表单,有两个类型为submit的按钮。因此,根据单击的按钮,将使用不同的参数访问服务中的相同功能。我想做的是在单击任何按钮时保持模式打开

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中生成路由,读取表单中的数据并将其发送回控制器。这真的让事情复杂化了。

也许这会有帮助

//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
    });
$(“#btn1,#btn2”)。单击(函数(){
var url=“”;
var formSerialize=$(“#formAjax”).serialize();
//#formAjax是您的
$.post(url、formSerialize、函数(响应){
$('.anyClass').html(response.someData);
}(“JSON”)
.失败(功能(xhr、状态、错误){
//做点什么
});