如何在Drupal 7中使用表单验证

c.a*_*sax 10 forms validation drupal

我正在尝试编辑Drupal Commerce中的结帐表单,要求用户输入两次他们的电子邮件地址.当他们提交表格时,Drupal应检查电子邮件是否匹配,form_set_error()如果不匹配则打电话.现在,我只是尝试将自定义验证功能附加到表单,这是我无法工作的.(我的模块叫做checkout_confirm_email.这个模块只供我们自己使用,所以我没有花太多精力在这个名字上).

function checkout_confirm_email_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'commerce_checkout_form_checkout') {
    $form['#validate'][] = 'checkout_confirm_email_form_validate';
    dprint_r($form['#validate']);
    dsm("I printed");
}
}

function checkout_confirm_email_form_validate($form, &$form_state) {    
    dsm("Never prints...");
}
Run Code Online (Sandbox Code Playgroud)

dprint_rstatment输出Array ([0] => checkout_confirm_email_form_validate).因此该函数是表单数组的一部分,但验证函数中的dsm语句永远不会打印.

我实际上已经被困了一段时间.我查了一些例子,我看不出我做错了什么.任何人?

Muh*_*our 12

您需要将#validate属性附加到表单提交按钮,如下所示:

$form['submit']['#validate'][] = 'checkout_confirm_email_form_validate'
Run Code Online (Sandbox Code Playgroud)

并且它将工作然后我的示例不必与您的表单树完全匹配您应该搜索提交按钮数组并将此示例应用于它