gpt4 book ai didi

php - 以编程方式跳过默认 CCK 表单验证

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:13 24 4
gpt4 key购买 nike

背景:在 Drupal 6 中,我有一个很长的 CCK 表单,其中包含许多必填字段。我还有一个授予某些用户特殊权限的模块。一种权限应该允许用户跳过必填字段并且仍然能够提交表单。我想警告用户,在允许他们确认提交之前,他们跳过了一些(对于非特权用户)必填的字段。

问题:如何跳过 CCK 表单的默认验证? (具体来说,必填字段)

以前的研究:我已经彻底搜索过这个问题的答案。我知道我应该使用 hook_form_alter(),也可能使用 after_build()。我已经尝试使用

重置验证
$form['#validate'] = array();

但是验证的方式没有变化(例如,必填字段的错误仍然存​​在,没有提交)。

最佳答案

设置 $form['#validate'] = array(); 应该在一定程度上起作用(任何显式验证处理程序将不再运行),但还有 #element_validate可以添加到大多数元素的 键,以及将触发默认表单验证的 #required 标志。

我认为消除这些约束的最简单方法是递归地遍历表单并取消设置恶意值。像这样:

function mymodule_unrequire_element(&$element) {
if (isset($element['#required'])) {
unset($element['#required']);
}
if (isset($element['#element_validate'])) {
unset($element['#element_validate']);
}

foreach (element_children($element) as $child_element) {
mymodule_unrequire_element($element[$child_element]);
}
}

function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'the_form_id') {
mymodule_unrequire_element($form);
}
}

这完全未经测试,但我认为它会成功:)

关于php - 以编程方式跳过默认 CCK 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8126048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com