Drupal #limit_validation_errors不起作用

时间:2012-10-22 12:35:43

标签: drupal drupal-7

我正在使用Drupal FAPI构建一个表单,并且有点复杂。我想要做的是在用户点击它时放一个按钮并添加一些信息,所以我需要跳过该按钮的验证。我正在尝试使用#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 个答案:

答案 0 :(得分:2)

看起来Drupal正在寻找使用value属性进行比较的triggering_element;因为我有另一个具有相同值的按钮,系统会搞乱这些值并将另一个按钮作为点击的按钮。

要修复代码,我只需要更改按钮的#value属性。当我改变树上的位置时,它正在工作,因为在那种情况下,Drupal选择了正确的按钮。

答案 1 :(得分:1)

以下是使用此属性的示例:

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