2012-10-22 31 views
2

我正在用Drupal FAPI構建一個表單,並且有點複雜。我想要做的就是放一個按鈕並在用戶點擊時添加一些信息,所以我需要跳過該按鈕的驗證。我試圖使用#limit_validation_errors屬性,但似乎並沒有工作,正在執行所有驗證。Drupal #limit_validation_errors不起作用

我注意到,當我把元素放在表單樹的根級別時,它確實有效。這是我有:

$form['application']['education']['add_education'] = array(
    '#type' => 'submit', 
    '#value' => 'Add', 
    '#submit' => array('_education_submit'), 
    '#limit_validation_errors' => array(), 
); 

上面的代碼不工作,下面的代碼工作,但:

$form['add_education'] = array(
    '#type' => 'submit', 
    '#value' => 'Add', 
    '#submit' => array('_education_submit'), 
    '#limit_validation_errors' => array(), 
); 

回答

2

它看起來像Drupal是尋找利用value屬性比較triggering_element;因爲我有另一個具有相同值的按鈕,系統會搞亂這些值並將其他按鈕當作點擊按鈕。

要修復代碼,我只需要更改按鈕的#value屬性。當我改變樹上的位置時它正在工作,因爲在那種情況下,Drupal採用了正確的按鈕。

0

下面是使用該屬性的例子:

$form['add_education'] = array(
    '#type' => 'submit', 
    '#value' => 'Add', 
    '#submit' => array('submit_function'), 
    '#limit_validation_errors' => array(array('_education_submit')), 
);