欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

forms -如何在Drupal 7 drupal7 d7 中使用自定义表单验证 有大用

我正在尝试在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...");
}

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

我实际上已经被卡住了一段时间了。我查看了示例,但看不到我做错了什么。任何人?


最佳答案

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

$form['submit']['#validate'][] = 'checkout_confirm_email_form_validate'


这样就可以了,那么我的示例就不必与表单树完全匹配了,您应该搜索“提交”按钮数组并将其应用于该示例


来自  https://www.lmlphp.com/user/151515/article/item/4033330/


普通分类: