我正在使用Drupal开发一个Web应用程序。我的表单包含两个按钮,“提交”和“清除”。如果单击“清除”按钮,我想跳过所有验证,包括必需的字段验证。有没有办法实现这个目标?
答案 0 :(得分:1)
当我需要表单重置按钮时,这就是我所做的。
在您的表单(或form_alter)代码中添加以下内容:
`$form['clear'] = array(
'#name' => 'reset',
'#type' => 'submit',
'#value' => t('Reset'),
'#id' => 'edit-reset-button',
'#validate' => array('form_clear'),
);`
添加clear函数(使用简单的unset和redirect):
`function form_clear($form, &$form_state) {
$form_state['rebuild'] = TRUE;
unset($form_state['values']);
drupal_goto($form['#action']);
}`
答案 1 :(得分:0)
有一种方法可以完成你想要做的事情,但它只适用于Drupal 7:当你定义“清除”表单字段时,添加以下行。
'#limit_validation_errors' => array()
该属性的文档将其描述为:
提供应该验证
$form_state['values']
部分的部分数组,这意味着不应验证未列出的部分。这通常在“后退”按钮的情况下以多步形式使用,例如,'#limit_validation_errors' => array()
意味着不会验证任何内容,因为当前页面上的表单值无论如何都要被丢弃。
the documentation的示例是关于“后退”按钮,但同样适用于您的情况下的“清除”按钮,因为所有输入的值都被丢弃,并且它没有意义报告未使用的值的错误。
Drupal 6不使用该form-field属性 没有办法避免验证值,特别是如果有值标记为必需值。您无法将这些值标记为必需,并将表单字段呈现为包含红色星号(这是标记所需值的Drupal方式),但是您应该为另一个按钮编写验证处理程序,以验证所需的值是否为进入。