2016-03-01 54 views
1

我有一個兩個按鈕的窗體。在控制器中,我檢測到哪個按鈕被點擊,並根據點擊的按鈕做不同的動作。如何模仿JavaScript的點擊按鈕?

if ($editForm->getClickedButton() != null && 
    $editForm->getClickedButton()->getName()=='sauvegarder_suivant') { 

這工作很好。

問題在某些情況下,我要求用戶確認他們是否真的想使用引導模式窗口提交。當確認框被觸發時,這會中斷控制器中的按鈕檢查。

$('form').submit(function (e) 
{ 
    cible = e.target; 
    e.preventDefault(); 

    // ... 

    $('#ratio_confirmation').modal('show'); 

    $('#confirmer').on('click', function() 
    { 
    cible.submit(); 
    }); 
}); 

我試圖置換確認按鈕和真正的按鈕ID和姓名的,希望的symfony會趕上點擊按鈕,但是這是行不通的。

我的計劃B是在隱藏字段中設置點擊按鈕,但如果這是可行的,我會使用getClickedButton方式來提前設置。

回答

0

我不知道,如果它的工作原理,但你可以嘗試顯式地檢查從formbuilder按鈕像

if ($form->get('save_and_add')->isClicked()) { 
    // action 1 
}elseif($form->get('save_and_add_other')->isClicked()){ 
    // action 2 
} 
+0

它不起作用。它返回false。可能與getClickedButton()具有相同的問題。 – Francis

0

您可以跟蹤在這樣的全局變量提交確認。

var confirmedSubmit = false; 

$('form').submit(function (e){ 
if(!confirmedSubmit){ 
     $('#ratio_confirmation').modal('show'); 
     return false; 
} 
return true; 

}); 

$('#confirmer').on('click', function(){ 
    confirmedSubmit = true; 
    $('form').submit(); 
}); 
+0

''editForm-> getClickedButton()'仍然返回null。 – Francis

0

讓我們來看看這些請求:

與e.preventDefault()

form%5Bname%5D=1&form%5Bsurname%5D=2 

沒有e.preventDefault()

form%5Bname%5D=1&form%5Bsurname%5D=2&form%5Bsecondsave%5D= 

正如你看到的,按鈕secondsave沒與表格無關。你可以這樣做 爲例:

var $subbuttons = $(":submit"); 
$subbuttons.on('click', function(e) { 
    e.preventDefault(); 
    var $submitbutton = $(this); 
    $('#ratio_confirmation').modal('show'); 
    $('#confirmer').on('click', function(e) { 
     $(this).unbind('click'); 
     $submitbutton.unbind('click').click(); 
    }); 
}) 

這是壞的榜樣,但它的工程! :) 我想如果你花一點時間,你會發現很棒的解決方案!