我正在使用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(),
);
答案 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')),
);