我需要在Drupal 6中创建用户时忽略两个表单字段的验证,但我根本不知道怎么做:
$userinfo = array(
'name' => $login,
'init' => $mail,
'mail' => $mail,
'pass' => $password,
'status' => 1,
'lastname' => "", //how to ignore those required fields that invalidate the form
'surname' => "" //how to ignore those required fields that invalidate the form
);
// register a new user
$form_state = array();
$form_state['values'] = $userinfo;
drupal_execute('user_register', $form_state);
$errors = form_get_errors(); // getting 2 required field errors
请注意,我无法抑制“必需”属性,因为它在其他地方以更“复杂”的形式使用。
由于
答案 0 :(得分:1)
我没有一个D6网站方便测试这个,但我认为它会工作......
由于drupal_execute()
会引导您完成整个表单构建过程,因此您可以利用hook_form_alter()
删除所需的状态,但仅限于您在$form_state
中传递的上下文中。例如
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_register' && !empty($form_state['custom_execution'])) {
$form['lastname']['#required'] = FALSE;
// etc...
}
}
...
$form_state = array();
$form_state['values'] = $userinfo;
$form_state['custom_execution'] = TRUE;
drupal_execute('user_register', $form_state);
答案 1 :(得分:0)
不能使用hook_form_alter来抑制“必需”属性,只有当from不以“复杂”形式使用时才会使用吗?
例如,如果您知道使用“复杂”表单的路径,则可以检查该路径是否与arg一起提供。
可以提供更好的检查......