Forms Drupal 6-忽略必填表单字段

Forms Drupal 6-忽略必填表单字段,forms,validation,drupal,drupal-6,Forms,Validation,Drupal,Drupal 6,在Drupal 6中创建用户时,我需要忽略两个表单字段的验证,但我根本不知道如何做: $userinfo = array( 'name' => $login, 'init' => $mail, 'mail' => $mail, 'pass' => $password, 'status' => 1, 'lastname' => "", //how to ignore those required fields

在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
请注意,我不能限制“required”属性,因为它在其他地方以更“复杂”的形式使用

谢谢

仅当from未以其“复杂”形式使用时,您不能使用来抑制“required”属性吗

例如,如果您知道使用“复杂”表单的路径,则可以检查是否正在使用该路径


更好的检查可能是可用的…

我手头没有D6站点来测试这个,但我认为它会起作用

由于
drupal\u execute()
推动您完成整个表单构建过程,因此您可以利用它删除所需的状态,但只能在
$form\u状态中传递的上下文中进行。比如说

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);

请不要一次问两个问题;如果你有两个问题,问两个独立的问题。我试试这个。感谢您提供的详细示例。